C++ 具名要求:可小于比较 (LessThanComparable)
来自cppreference.com
类型必须能使用 <
运算符且结果应当具有标准语义。
要求
对于类型 T
,给定 T
或 const T (C++11 起) 类型的表达式 a、b 和 c,如果以下表达式合法且具有指定的效果,那么 T
满足可小于比较 (LessThanComparable) :
表达式 | 类型 | 要求 |
---|---|---|
a < b | 符合可布尔测试 (BooleanTestable) (C++20 前) |
建立严格弱序关系,即具有下列属性:
|
实现 boolean-testable (C++20 起) |
注解
为满足此要求,没有内建比较运算符的类型必须提供用户定义的 operator<。
对于既可相等比较 (EqualityComparable) 又可小于比较 (LessThanComparable) 的类型,C++ 标准库区分:
- 相等(即表达式 a == b 的值)和
- 等价(即表达式 !(a < b) && !(b < a) 的值)
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2114 (P2167R3) |
C++98 | 到 bool 的可转换性过于弱而无法反映实现的期待 | 加强要求 |
参阅
建立顺序关系的二元谓词 (BinaryPredicate) (具名要求) | |
(C++20) |
指定一个 关系 所强加的是严格弱序 (概念) |