C++ 名前付き要件: EqualityComparable
From cppreference.com
型は==演算子と連携して動作し、その結果は標準的な意味論を持つ必要があります。
目次 |
[編集] 要件
型Tは、式 a、b、および c が T または (C++11 以降) const T の型である場合、次の式が有効であり、指定された効果を持つ場合に EqualityComparable を満たします。
| 式 | 型 | 効果 |
|---|---|---|
| a == b | BooleanTestable を満たす (C++20まで) |
これは同値関係を確立します。つまり、以下の性質を満たします。
|
boolean-testable をモデル化する(C++20以降) |
[編集] 注意
この要件を満たすために、組み込みの比較演算子を持たない型は、ユーザー定義の operator== を提供する必要があります。
EqualityComparable かつ LessThanComparable の両方の型について、C++標準ライブラリは以下を区別します。
- Equality (等価性): 式 a == b の値。
- Equivalence (同値): 式 !(a < b) && !(b < a) の値。
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 283 | C++98 | たとえTがEqualityComparableであっても、要件は const T オブジェクトには適用されませんでした。 |
それらは const T に適用されます。 |
| LWG 2114 (P2167R3) |
C++98 | bool への変換可能性は、実装の期待を反映するには弱すぎた | 要件が強化された |
[編集] 関連項目
| 演算子==が同値関係であることを規定する (コンセプト) |