C++ では、ユーザー型の==and!=演算子をオーバーロードできますが、言語はユーザーがそれを行う方法を気にしません。true両方をオーバーロードして何があっても返すことができるので、必ずしも同じものに評価する必要は!(a==b)ありません。とが異なる(a!=b)状況にある言語は他にいくつありますか? それは一般的なことですか?¬(a = b)(a ≠ b)
これは単なるオーバーロードの問題ではなく、プリミティブ型であっても奇妙なコーナー ケースです。C および C++ の NaN は、NaN を含め、何とも等しくありません。確かに C では NaN != NaN ですが、他の言語でも同様のケースで¬(a = b)と(a ≠ b)が異なる場合があるのではないでしょうか?