std::strong_order

来自cppreference.com
< cpp‎ | utility
定义于头文件 <compare>
template< class T >
constexpr std::strong_ordering strong_order(const T& a, const T& b);
(C++20 起)

用三路比较比较二个值,并产生 std::strong_ordering 类型结果。

具体而言,

  • 首先,若 std::numeric_limits<T>::is_iec559true ,则进行 ISO/IEC/IEEE 60559 的浮点值全序 (totalOrder) 比较,并将结果作为 std::strong_ordering 类型值返回(注意:此比较能辨别正和负零,及有不同表示的 NaN )
  • 否则若表达式 a <=> b 为良式而其结果可转换为 std::strong_ordering ,则返回该结果。
  • 否则,若表达式 a <=> b 为良式,但其结果不可转换为 std::strong_ordering ,则定义函数为被删除。
  • 否则,若表达式 a <=> b 为病式,但表达式 a == ba < b 均为良式且可转换为 bool
  • a == btrue ,则返回 std::strong_ordering::equal
  • 否则若 a < btrue ,则返回 std::strong_ordering::less
  • 否则返回 std::strong_ordering::greater
  • 否则,定义函数为被删除。

目录

[编辑] 参数

a, b - 要比较的值

[编辑] 返回值

上述的 std::strong_ordering 类型值。

[编辑] 注意

[编辑] 示例

[编辑] 参阅

三路比较的结果类型,支持所有 6 种运算符且可替换
(类) [编辑]
进行三路比较并产生 std::weak_ordering 类型结果
(函数模板) [编辑]