【发布时间】:2017-07-26 15:15:15
【问题描述】:
我需要一种方法来获取从函数返回的“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>::unique_ptr(const std::unique_ptr<_ty>> &)': 试图引用已删除的函数 c:\program files (x86 )\microsoft visual studio 14.0\vc\include\xmemory0 737
我正在使用 microsoft visual studios 2015 编译程序。
编辑:正如我之前所说,我需要一些解决方案,只涉及一个逗号分隔的唯一指针列表,我似乎无法弄清楚如何使用可变参数来告诉我像 std::initializer_list 这样的参数 # 可以做.我可以使用一些模板或宏 hack 来实现这一点吗?
【问题讨论】:
-
不知道为什么人们一直称它为“视觉工作室”或者为什么你有如此有趣的缩进风格,但那是 by ;)
标签: c++ stdvector unique-ptr initializer-list