std :: deque :: erase,T需要是MoveAssignable,如何逃避?

时间:2015-11-24 09:17:49

标签: c++ std

作为来自here的后续问题,我想知道是否有办法逃避std :: deque :: erase的MoveAssignable。实际上我有很多互连的类,有很多const类型和引用,远离MoveAssignable。我需要对它们进行容器处理,但是如果不能使用擦除,这将变得毫无意义。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

std::deque的工作方式要求使其内容可重定位(否则,它不需要MoveAssignable概念)。这意味着你不能使用不可移动类型的双端队列(或者一个向量)。但是你可以使用一个不会移动其元素的容器,比如std::list或关联容器。