21項 等しい値に対して比較関数が常にfalseを返すようにしよう

等しい値に対して比較関数が常にfalseを返すようにしよう



次のコードは、コンテナを破壊します。

set<int, LessEqual> s; //sは"<="でソートされる。
s.insert(2);
s.insert(2);

2つ目の2を挿入した時、下の比較が行われます。

!(2 <= 2) && !(2 <= 2)

結果はfalseとなるため、2と2は別のものであるという結論になってしまいます。
このときの振る舞いは未定義です。


なので、等しい値に対して比較関数が常にfalseを返すようにします。