C++ 具名要求:可相等比较 (EqualityComparable)
来自cppreference.com
类型必须能使用 == 运算符且结果应当具有标准语义。
要求
以下情况下,类型 T
满足可相等比较 (EqualityComparable) :
给定
-
T
或 (C++11 起)const T
类型的表达式 a、b 与 c
下列表达式必须合法且拥有指定的效果:
表达式 | 返回类型 | 要求 |
---|---|---|
a == b | 可隐式转换到 bool | 建立一种等价关系,即满足下列性质:
|
注解
为满足此要求,没有内建比较运算符的类型必须提供用户定义的 operator==。
对于既是可相等比较 (EqualityComparable) 也是可小于比较 (LessThanComparable) 的类型,C++ 标准库对相等(即表达式 a == b 的值)和等价(即表达式 !(a < b) && !(b < a) 的值)间做出区别。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 283 | C++98 | 即使 T 是 可相等比较 (EqualityComparable) 的,const T 类型的对象也不适用这些要求
|
适用于 const T 而不是 T
|
参阅
指定运算符 == 为等价关系 (概念) |