C++ 命名需求: EqualityComparable
來自 cppreference.com
該型別必須與 ==
運算子一起使用,並且結果應具有標準語義。
目錄 |
[編輯] 要求
如果給定型別為 T
或 (自 C++11 起) const T 的表示式 a、b 和 c,則型別 T
滿足 EqualityComparable,且以下表達式有效並具有其指定效果
表示式 | 型別 | 效果 |
---|---|---|
a == b | 滿足 BooleanTestable (C++20 前) |
建立一個等價關係,即它滿足以下屬性
|
模型 boolean-testable (C++20 起) |
[編輯] 注意
為了滿足此要求,沒有內建比較運算子的型別必須提供使用者定義的 operator==。
對於同時是 EqualityComparable 和 LessThanComparable 的型別,C++ 標準庫區分
- 相等,即表示式 a == b 的值,以及
- 等價,即表示式 !(a < b) && !(b < a) 的值。
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 283 | C++98 | 即使 T 是 EqualityComparable,要求也不適用於 const T 物件 |
它們適用於 const T 而不是 T |
LWG 2114 (P2167R3) |
C++98 | 可轉換為 bool 對於反映實現的期望來說太弱了 | 要求已加強 |
[編輯] 另見
指定運算子 == 是等價關係 (概念) |