Вопрос

I've created a simple example to show what kind of data structures I have:

#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);

I want to know what happens to my vector<Attribute> attributes after it goes out of scope. Normally with vectors the destructor is called on each element, but what happens if the type of these elements is unknown (as with boost::any or boost::variant)?

Это было полезно?

Решение

The type is not unknown. It's just variant or dynamic.

The destructor is still run. This is the entire point of using these classes: they provide value semantics[1] on variable typed data.


Or reference-wrapper semantics, if you will, for boost::variant<T&>

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top