對於輸入迭代器,如果其中一個迭代器已失效,那麼比較相等性的要求是什麼?輸入迭代器的等效比較
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