我需要一种方法来从函数返回一个'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这样的参数可以做什么。我可以使用一些模板或宏黑客来实现这个目标吗?
答案 0 :(得分:4)
您无法将元素移出../Downloads/FlareGet/Videos/Why .mp4
。