set<unique_ptr<X>> a,b; set<unique_ptr<X>>::iterator iter = find something in a;
我想从a中删除iter指向的元素并将其插入到b中.可能吗?怎么样?
auto tmp = const_cast<std::unique_ptr<std::string>&&>(*iter); a.erase(iter); b.insert(std::move(tmp));
好吧,第一行违反了set invariant并且它很可怕但是据我所知它应该不是问题,因为在下一行我们从集合中删除了这个邪恶的节点.