有什么方法可以初始化unique_ptr的向量?

时间:2014-09-13 20:33:34

标签: c++ c++11 initialization

例如

struct A
{
    vector<unique_ptr<int>> m_vector { make_unique<int>(1), make_unique<int>(2) };
};

我尝试上面但失败了。有没有办法初始化unique_ptr的载体?

1 个答案:

答案 0 :(得分:8)

您无法从初始化列表移动,因为元素为const。 §8.5.4[dcl.init.list] / p5:

  

std::initializer_list<E>类型的对象是由一个构造的   初始化列表,好像实现分配了一个N数组   类型const E的元素,其中N是元素的数量   初始化列表。该数组的每个元素都使用复制初始化   初始化列表的对应元素,以及   构造std::initializer_list<E>对象来引用它   阵列。

您只能复制,但不能复制unique_ptr,因为它只是移动。

在构建向量后,您必须使用push_backemplace_back等填充向量。