c++17
std::variant<std::string,int,float>;//作为联合体
using va = std::variant<std::string, int, float>;
va v = 23;
cout << std::get<int>(v);
va v2 = "this is hello";
cout << std::get<string>(v2).data();
std::any a = 2;
//使用std::visit访问,
struct Visitor{
void oeprator()(int m){
cout<<m<<endl;
}
void operator(string s){
cout<<s.data()<<endl;
}
void operator(float f){
cout<<f<<endl;
}
}
std::vaiant可以用作返回值,即std::variant<bool,void*) 如果不符合期望则返回nullptr
std::any是一个包含任何类型的容器
1 std::any a = 2; 2 //cout << endl << a.type() << endl; 3 cout << endl << a.type().name() << endl; 4 a = "string"; 5 6 //每次重新赋值 都会变成新的类型名称 7 cout << endl << a.type().name() << endl; 8 a = Control["Button"].at(0); 9 cout << endl << a.type().name() << endl; 10 a = nullptr; 11 cout << endl << a.type().name() << endl; 12 if (nullptr == std::any_cast<std::nullptr_t>(a)) 13 { 14 cout << "nullptr" << endl; 15 } 16 17
浙公网安备 33010602011771号