【发布时间】:2016-11-04 01:41:12
【问题描述】:
我正在尝试从std::set 中删除一个元素std::move,然后将其从集合中删除:
std::set<some_type> the_set;
some_type item;
for (auto iter = the_set.begin(); iter != the_set.end(); iter++)
{
auto miter = std::make_move_iterator(iter);
item = std::move(*miter);
the_set.erase(iter);
break;
}
但编译器不喜欢它(MSVC 2015):
error C2280: 'some_type &some_type::operator =(const some_type &)': attempting to reference a deleted function
似乎它正在尝试使用复制构造函数,这是我不想要的。我如何让它使用移动构造函数? (我绝望地尝试了move_iterator,不确定这是否是正确的解决方案)。
【问题讨论】:
标签: c++ c++11 std move-semantics