Namespaces
Variants

std:: compare_strong_order_fallback

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

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

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

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

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

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

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

  • 若为合法表达式,则执行 std:: strong_order ( t, u )
  • 否则,执行 t == u ? std :: strong_ordering :: equal :
    t < u ? std :: strong_ordering :: less :
    std :: strong_ordering :: greater
如果表达式 t == u t < u 均格式正确,且 decltype ( t == u ) decltype ( t < u ) 均满足 boolean-testable 概念,但要求 t u 仅被求值一次。

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

目录

定制点对象

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

示例

缺陷报告

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

缺陷报告 应用于 发布时的行为 正确行为
LWG 2114
( P2167R3 )
C++20 后备机制仅要求
返回类型可转换为 bool
约束条件已加强

参见

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