名前空間
変種
操作

C++ 名前付き要件: EqualityComparable

From cppreference.com
 
 
C++ 名前付き要件
 

型は==演算子と連携して動作し、その結果は標準的な意味論を持つ必要があります。

目次

[編集] 要件

Tは、式 ab、および cT または (C++11 以降) const T の型である場合、次の式が有効であり、指定された効果を持つ場合に EqualityComparable を満たします。

 式  効果
a == b BooleanTestable を満たす
(C++20まで)
これは同値関係を確立します。つまり、以下の性質を満たします。
  • a のすべての値に対して、a == atrue を返します。
  • もし a == b ならば、b == a です。
  • もし a == b かつ b == c ならば、a == c です。
boolean-testable をモデル化する
(C++20以降)

[編集] 注意

この要件を満たすために、組み込みの比較演算子を持たない型は、ユーザー定義の operator== を提供する必要があります。

EqualityComparable かつ LessThanComparable の両方の型について、C++標準ライブラリは以下を区別します。

  • Equality (等価性): 式 a == b の値。
  • Equivalence (同値): 式 !(a < b) && !(b < a) の値。

[編集] 欠陥報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 283 C++98 たとえTEqualityComparableであっても、
要件は const T オブジェクトには適用されませんでした。
それらは
const T に適用されます。
LWG 2114
(P2167R3)
C++98 bool への変換可能性は、実装の期待を反映するには弱すぎた 要件が強化された

[編集] 関連項目

演算子==が同値関係であることを規定する
(コンセプト) [編集]
English 日本語 中文(简体) 中文(繁體)