1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
可以保存任意类型的值,类似Qt的QVariant
if (a.type() == typeid(std::string))
{
std::string s = std::any_cast<std::string>(a);//使用any_cast<该值的类型>来获取值
useString(s);
}
else if (a.type() == typeid(int)) // a.type().name()会打印出int
{
useInt(std::any_cast<int>(a));
}
转换失败会抛出std::bad_any_cast
所以最好
try {
auto s = std::any_cast<std::string>(a);
...
}
catch (std::bad_any_cast& e) {
std::cerr << "EXCEPTION: " << e.what() << '\n';
}
也可以放入容器
std::vector<std::any> v;
欢迎评论交流