对于输入迭代器,如果其中一个迭代器已失效,那么比较相等性的要求是什么?输入迭代器的等效比较
input_iter x = foo();
input_iter y = x;
++x;
return x == y; // What must this return?
在上述例子中,解除引用y
显然是未定义的,但是这样的相等比较的结果定义?阅读cppreference.com,这绝对是两个输入迭代器必须比较true
如果他们真的是相同的,因为输入迭代器必须满足EqualityComparable
的情况,但我实际上没有看到任何东西,说其结果必然是什么,如果是不的相同。我允许总是返回true
从operator==
(除了比较结束迭代器)?
似乎暗示你应该返回'false',如果它们不是等价的,但你说得对,没有明确说明,这很奇怪。值得注意的是'x!= y'被定义为等同于'!(x == y)',所以可能会迫使你的手在这里。 – tadman