【C++17】std::any 把任意类型的数据存储到一个变量中

为什么要用std::any 而不是 std::variant

std::variant可以通过声明不同的类型,来变换内部存储的数据,给每种数据都分配了内存空间。

enum中所有变量类型共用同一块内存区域。

使用std::any_cast 来读取any中的数据。

any很聪明,小类型用enum存,大类型用void*存。

如果传入数据大于32字节,any会创建堆内存new额外存储一次。

不推荐使用std::any,它能做的事情,用std::variant或者std::optional更好。std::any的内存空间不太可控

你可能感兴趣的:(C++,c++,开发语言,visual,studio)