入力イテレータの場合、イテレータの1つが無効化されている場合、等価性を比較するための要件は何ですか?上記の例で入力イテレータの等価比較
input_iter x = foo();
input_iter y = x;
++x;
return x == y; // What must this return?
、y
を逆参照すると、明らかに不定であるが、定義されたこのような等価比較の結果ですか? cppreference.comを読むと、入力イテレータはEqualityComparable
を満たさなければならないので、2つの入力イテレータが実際に同じ場合はtrue
を比較する必要がありますが、実際には結果が何であるかはわかりません。同じ。 常にを返すtrue
operator==
から返すことができますか?(終了イテレータとの比較を除いて)?
等価でない場合は 'false'を返さなければならないと思われますが、あなたが正しいとすれば、それは明白ではなく、奇妙です。 'x!= y'は'!(x == y) 'と等価であると定義されているので、ここであなたの手を強要するかもしれないことに注意する価値があります。 – tadman