替代初始化唯一指针的矢量

时间:2017-03-06 16:39:32

标签: c++ stdvector unique-ptr initializer-list

我需要一种方法来从函数返回一个'std :: unique_ptr',并在初始化列表中使用它来初始化它们std::vector。我愿意解决任何涉及用逗号分隔列表初始化std::vector的解决方案(即变量函数返回向量),但是这个过程需要使用移动语义来获取返回的'std :: unique_ptr'数据。我遇到的问题可以在下面的代码中看到:

#include <vector>
#include <memory>

std::unique_ptr<int> create(int value) {
    return std::make_unique<int>(value);
}

int main() {
    std::vector<std::unique_ptr<int>> myVec = { create(1), create(2), create(3) }; //this results in an error
    return 0;
}
  

错误信息:C2280'std :: unique_ptr&gt; :: unique_ptr(const std :: unique_ptr&lt; _Ty,std :: default_delete&lt; _Ty&gt;&gt;&amp;)':尝试引用已删除的函数c:\ program files (x86)\ microsoft visual studio 14.0 \ vc \ include \ xmemory0 737

我正在使用microsoft visual studios 2015来编译程序。

编辑:正如我之前所说,我需要一些简单的逗号分隔的独特指针列表的解决方案,我似乎无法弄清楚如何使用变量参数告诉我像std :: initializer_list这样的参数可以做什么。我可以使用一些模板或宏黑客来实现这个目标吗?

1 个答案:

答案 0 :(得分:4)

您无法将元素移出../Downloads/FlareGet/Videos/Why .mp4