【发布时间】:2015-10-12 08:00:45
【问题描述】:
作为a question concerning comparing invalid iterators 的后续行动,我试图在 C++ 标准中找到无效迭代器的允许表达式的定义。搜索“无效迭代器”仅在 §24.2.1.11 中找到一个引用。它说无效的迭代器可能是“单一的”,但仅说明取消引用它们可能是未定义的行为。没有给出进一步的语义。
最初的答案之一表明它是实现定义的行为,但我认为一般不能假设这是因为上述段落明确提到了 UB。
This answer 显示“对无效指针值的任何其他使用都具有实现定义的行为”。由于向量的迭代器通常被实现为指针,我认为比较两个无效的迭代器至少是实现定义的行为。
谁能指出标准中定义无效迭代器语义的相关部分?
【问题讨论】:
标签: c++ vector stl language-lawyer