C++ 命名要求: LessThanComparable
该类型必须与 < 运算符一起使用,并且结果应具有标准语义。
要求
如果类型 T 满足 LessThanComparable,则:
给定
a
、b
和c
是类型为T
或const T
的表达式
以下表达式必须有效并具有其指定的效果
表达式 | 返回类型 | 要求 |
---|---|---|
a < b | 可隐式转换为 bool | 建立了具有以下属性的严格弱序关系: * 对于所有 a ,!(a < a) * 如果 a < b 则 !(b < a) * 如果 a < b 且 b < c 则 a < c * 将 equiv(a, b) 定义为 !(a < b) && !(b < a) ,如果 equiv(a, b) 且 equiv(b, c) ,则 equiv(a, c) |
备注
为了满足此要求,没有内置比较运算符的类型必须提供用户定义的 operator<
对于既是 EqualityComparable 又是 LessThanComparable 的类型,C++ 标准库区分了相等性(表达式 a == b
的值)和等价性(表达式 !(a < b) && !(b < a)
的值)。