std::weak_equality

来自cppreference.com
< cpp‎ | utility
定义于头文件 <compare>
class weak_equality;
(C++20 起)

类类型 std::weak_equality 是这种三路比较的结果类型

  • 仅接纳相等和不等比较(非小于/大于)
  • 不隐含可替换性:若 a 等价于 b ,则 f(a) 可能不等价于 f(b) 。这里 f 所指代的函数仅可经由参数的公开 const 成员读取显著的比较状态。换言之,等价的值可能可区别。

std::weak_equality 是最弱的比较类别类型:它不可隐式转换为任何其他比较类别,但其他四种比较类别( std::strong_equalitystd::partial_orderingstd::weak_orderingstd::strong_ordering )能隐式转换为 std::weak_equality

目录

[编辑] 常量

类型 std::weak_equality 只有二个合法值,作为其类型的 const 静态数据成员实现: std::weak_equality::equivalentstd::weak_equality::nonequivalent

 
成员常量 定义
equivalent(inline constexpr)
[静态]
std::weak_equality 类型的合法值,指示等价
(公开静态成员常量)
nonequivalent(inline constexpr)
[静态]
std::weak_equality 类型的合法值,指示不等价
(公开静态成员常量)

[编辑] 比较

在此类型和字面量 0 间定义比较运算符。这支持用表达式 a <=> b == 0a <=> b != 0 转换三路比较运算符为布尔关系;见 std::is_eqstd::is_neq

若程序试图将 weak_equality 与任何异于整数字面量 0 的事物比较,则其行为未定义。

operator==
operator!=
operator<=>
与零比较
(函数)

operator==

friend constexpr bool operator==(weak_equality v, /*unspecified*/ u) noexcept;
friend constexpr bool operator==(/*unspecified*/ u, weak_equality v) noexcept;

参数

v - 要检查的 std::weak_equality
u - 任何接受字面零实参的类型的不使用形参

返回值

vequivalent 则为 true ,而若 vnonequivalent 则为 false

operator!=

friend constexpr bool operator!=(weak_equality v, /*unspecified*/ u) noexcept;
friend constexpr bool operator!=(/*unspecified*/ u, weak_equality v) noexcept;

参数

v - 要检查的 std::weak_equality
u - 任何接受字面零实参的类型的不使用形参

返回值

vequivalent 则为 false ,而若 vnonequivalent 则为 true

operator<=>

friend constexpr weak_equality operator<=>(weak_equality v, /*unspecified*/ u) noexcept;
friend constexpr weak_equality operator<=>(/*unspecified*/ u, weak_equality v) noexcept;

参数

v - 要检查的 std::weak_equality
u - 任何接受字面零实参类型的不使用形参

返回值

v

[编辑] 示例

[编辑] 参阅

三路比较的结果类型,支持所有 6 种运算符且可替换
(类) [编辑]
三路比较的结果类型,支持所有 6 种运算符且不可替换
(类) [编辑]
三路比较的结果类型,支持所有 6 种运算符,不可替换,并允许不可比较值
(类) [编辑]
三路比较的结果类型,仅支持相等/不相等,且可替换
(类) [编辑]