我有一个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));
}
Run Code Online (Sandbox Code Playgroud)
这会在VS2017上出现以下错误:
错误C2280:'std :: unique_ptr> :: unique_ptr(const std :: unique_ptr <_Ty,std :: default_delete <_Ty >>&)':尝试引用已删除的函数
我们不能将迭代器移动到非const变量std::set吗?什么可以解决这个问题?