我目前正在考虑实现一个自定义容器,该容器需要与STL算法兼容,因此必须满足here所述的C++容器要求。

在该文档中Methods and operators表指出,表达式a = b具有a == b的后置条件。我对此深感困惑。
如该表达式的表项所示:



据我了解,移动对象时伴随着这样的期望,即被移动的对象(源对象?)将处于有效但未定义的状态。因此,我认为条件a == b无法满足。

我在这里想念什么?

最佳答案

cppreference page是从标准中摘录并改编的,以提高可读性。在这种情况下,它简化了需求,必须区分不同的值类别(如您所正确推断的)。或者,可能是两个偶然的分配案例(在标准表中没有连续出现)被意外合并。无论哪种方式,cppreference当前都是错误的。

以下是(当前草案)标准的内容:

http://eel.is/c++draft/containers#container.requirements.general-4

对于移动分配:



对于拷贝分配:

关于c++ - C++ STL容器要求-后置条件困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57790017/

10-09 00:20
查看更多