Namespaces
Variants

C++ named requirements: LessThanComparable

From cppreference.net
C++ named requirements

该类型必须能够与 < 运算符配合使用,且结果应符合标准语义。

目录

要求

类型 T 满足 LessThanComparable 要求,当给定类型 T const T (C++11 起) 的表达式 a b c 时,下列表达式合法且具有指定效果:

表达式 类型 效果
a < b 满足 BooleanTestable
(C++20 前)
建立具有以下性质的 严格弱序 关系:
  • 对所有 a ! ( a < a ) 产生 true
  • 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 )
建模 boolean-testable
(C++20 起)

注释

为满足此要求,未内置 比较运算符 的类型必须提供 用户自定义的 operator <

对于同时满足 可相等比较 可小于比较 的类型,C++标准库对以下概念进行了区分:

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

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

缺陷报告 应用于 发布时的行为 正确行为
LWG 2114
( P2167R3 )
C++98 bool 的可转换性要求过弱,未能反映实现方案的预期 强化了要求条件

另请参阅

一个 BinaryPredicate ,用于建立排序关系
(具名要求)
规定某个 relation 需施加严格弱序关系
(概念)