跳到主要内容

C++ 命名要求: LessThanComparable

该类型必须与 < 运算符一起使用,并且结果应具有标准语义。

要求

如果类型 T 满足 LessThanComparable,则:

给定

  • abc 是类型为 Tconst T 的表达式

以下表达式必须有效并具有其指定的效果

表达式返回类型要求
a < b可隐式转换为 bool建立了具有以下属性的严格弱序关系:
* 对于所有 a!(a < a)
* 如果 a < b!(b < a)
* 如果 a < bb < ca < 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) 的值)。

C++ 命名要求: LessThanComparable

该类型必须与 < 运算符一起使用,并且结果应具有标准语义。

要求

如果类型 T 满足 LessThanComparable,则:

给定

  • abc 是类型为 Tconst T 的表达式

以下表达式必须有效并具有其指定的效果

表达式返回类型要求
a < b可隐式转换为 bool建立了具有以下属性的严格弱序关系:
* 对于所有 a!(a < a)
* 如果 a < b!(b < a)
* 如果 a < bb < ca < 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) 的值)。