名稱空間
變體
操作

C++ 命名需求: EqualityComparable

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍
EqualityComparable(可相等比較)




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
隨機數
併發
(C++11)
Ranges
多維檢視
其他

 

該型別必須與 == 運算子一起使用,並且結果應具有標準語義。

目錄

[編輯] 要求

如果給定型別為 T(自 C++11 起) const T 的表示式 abc,則型別 T 滿足 EqualityComparable,且以下表達式有效並具有其指定效果

 表示式  型別 效果
a == b 滿足 BooleanTestable
(C++20 前)
建立一個等價關係,即它滿足以下屬性
  • 對於 a 的所有值,a == a 產生 true
  • 如果 a == b,則 b == a
  • 如果 a == bb == c,則 a == c
模型 boolean-testable
(C++20 起)

[編輯] 注意

為了滿足此要求,沒有內建比較運算子的型別必須提供使用者定義的 operator==

對於同時是 EqualityComparableLessThanComparable 的型別,C++ 標準庫區分

  • 相等,即表示式 a == b 的值,以及
  • 等價,即表示式 !(a < b) && !(b < a) 的值。

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 283 C++98 即使 TEqualityComparable
要求也不適用於 const T 物件
它們適用於
const T 而不是 T
LWG 2114
(P2167R3)
C++98 可轉換為 bool 對於反映實現的期望來說太弱了 要求已加強

[編輯] 另見

指定運算子 == 是等價關係
(概念) [編輯]