我目前正在考虑实现一个自定义容器,该容器需要与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/