【发布时间】:2017-12-15 07:16:01
【问题描述】:
我有一个std::set<std::unique_ptr<T>>,我想把它移到std::vector<std::unique_ptr<T>>
#include <set>
#include <vector>
#include <memory>
class C {};
int main()
{
std::set<std::unique_ptr<const C>> s;
std::vector<std::unique_ptr<const C>> v;
std::move(s.begin(), s.end(), std::back_inserter(v));
}
这在 VS2017 上会出现以下错误:
错误 C2280: 'std::unique_ptr>::unique_ptr(const std::unique_ptr<_ty>> &)': 试图引用已删除的函数
我们不能将迭代器从std::set 移动到非常量变量吗?有什么可行的解决方案来解决这个问题?
【问题讨论】: