Namespaces
Variants

std::partial_order

来自cppreference.net
 
 
 
定义于头文件 <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */ partial_order = /* unspecified */;
}
(C++20 起)
调用签名
template< class T, class U >
    requires /* see below */
constexpr std::partial_ordering
    partial_order( T&& t, U&& u ) noexcept(/* see below */);

使用三路比较比较两个值,并产生类型为 std::partial_ordering 的结果。

令 t 和 u 为表达式,且 T 与 U 分别表示 decltype((t)) 和 decltype((u)),则 std::partial_order(t, u) 是表达式等价的

  • 如果 std::is_same_v<std::decay_t<T>, std::decay_t<U>> 为 true:
    • std::partial_ordering(partial_order(t, u)),如果它是一个格式良好的表达式,且重载决议在不包含 std::partial_order 声明的语境中执行,
    • 否则,std::partial_ordering(std::compare_three_way()(t, u)),如果格式良好,
    • 否则,std::partial_ordering(std::weak_order(t, u)),如果格式良好。
  • 在所有其他情况下,该表达式是格式错误的,当出现在模板实例化的立即语境中时,可能导致替换失败。

定制点对象

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

示例

参见

支持全部6种运算符、不可替换且允许不可比较值的三路比较结果类型
(类)
执行三路比较并生成 std::strong_ordering 类型的结果
(定制点对象)
(C++20)
执行三路比较并生成 std::weak_ordering 类型的结果
(定制点对象)
执行三路比较并生成 std::partial_ordering 类型的结果,即使 operator <=> 不可用
(定制点对象)