在boost :: variant对象的向量之后清理

时间:2014-04-03 01:27:11

标签: c++ boost memory-leaks stdvector boost-variant

我创建了一个简单的示例来展示我拥有的数据结构类型:

#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::anyboost::variant),会发生什么?

1 个答案:

答案 0 :(得分:1)

类型不详。它只是变种动态

析构函数仍在运行。这是使用这些类的全部要点:它们为变量类型数据提供了值语义 [1]


或者引用包装器语义,如果你愿意,for boost::variant<T&>