yang131

导航

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  

 

posted on 2020-06-10 13:48  NoNight  阅读(451)  评论(0编辑  收藏  举报