我创建了一个简单的示例来展示我拥有的数据结构类型:
#include "boost/variant.hpp"
struct Attribute {
boost::variant<vector<double>, vector<std::string>, vector<int64_t> > data;
std::string type;
};
struct Attribute a;
vector<double> vec;
vec.push_back(1);
vec.push_back(2);
a.data = vec;
a.type = "double";
vector<Attribute> attributes;
attributes.push_back(a);
我想知道vector<Attribute> attributes
超出范围后会发生什么。通常使用向量,在每个元素上调用析构函数,但如果这些元素的类型未知(如boost::any
或boost::variant
),会发生什么?
答案 0 :(得分:1)
类型不详。它只是变种或动态。
析构函数仍在运行。这是使用这些类的全部要点:它们为变量类型数据提供了值语义 [1] 。
或者引用包装器语义,如果你愿意,for boost::variant<T&>