std::variant 类似 union
using IntFloatString = std::variant<int, float, std::string>;
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)); }
|
应用场景
同一个函数,可能返回不同类型的返回值。
多态