cpp-variant

std::variant 类似 union

using IntFloatString = std::variant<int, float, std::string>; // 定义支持int、float、string三个类型,并取一个别名
//初始化一个variant
TEST_F(InitVariant) {

IntFloatString i = 10;
ASSERT_EQ(10, std::get<int>(i) );

IntFloatString f = 20.0f;
ASSERT_EQ(20.0f, std::get<float>(f) );

IntFloatString s = "hello world";
ASSERT_EQ("hello world", std::get<std::string>(s));
}

应用场景

同一个函数,可能返回不同类型的返回值。

多态