Namespaces
Variants

std:: compare_partial_order_fallback

From cppreference.net
Utilities library
定义于头文件 <compare>
inline namespace /* 未指定 */ {

inline constexpr /* 未指定 */
compare_partial_order_fallback = /* 未指定 */ ;

}
(C++20 起)
调用签名
template < class T, class U >

requires /* 见下文 */
constexpr std:: partial_ordering

compare_partial_order_fallback ( T && t, U && u ) noexcept ( /* 见下文 */ ) ;
(C++20 起)

子表达式 t u 进行三路比较,并生成 std::partial_ordering 类型的结果,即使运算符 <=> 不可用。

如果 std:: decay_t < T > std:: decay_t < U >> 是相同类型, std :: compare_partial_order_fallback ( t, u ) 表达式等价性 上等同于:

  • 若表达式合法,则执行 std:: partial_order ( t, u )
  • 否则,当表达式 t == u t < u u < t 均合法,且 decltype ( t == u ) decltype ( t < u ) decltype ( u < t ) 均满足 boolean-testable 概念时(其中 t u 仅被求值一次),执行:
    t == u ? std :: partial_ordering :: equivalent :
    t < u ? std :: partial_ordering :: less :
    u < t ? std :: partial_ordering :: greater :
    std :: partial_ordering :: unordered

在所有其他情况下, std :: compare_partial_order_fallback ( t, u ) 的格式不正确,当它出现在模板实例化的直接上下文中时,可能导致 替换失败

目录

定制点对象

名称 std::compare_partial_order_fallback 表示一个 定制点对象 ,这是一个字面量 semiregular 类类型的常量 函数对象 。有关详细信息,请参阅 定制点对象

示例

缺陷报告

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

缺陷报告 适用版本 发布时行为 正确行为
LWG 2114
( P2167R3 )
C++20 回退机制仅要求
返回类型可转换为 bool
约束条件已加强
LWG 3465 C++20 回退机制未要求 u < t 格式正确 现要求格式正确
LWG 4157 C++20 P2167R3 覆盖了 LWG 3465 的解决方案 已恢复原解决方案

参见

执行三路比较并生成 std::partial_ordering 类型的结果
(定制点对象)