std::weak_ordering(3)
π¦ std::weak_ordering(3) π¦
okay so this is the std::weak_ordering page from the C++ Standard Libary manual, and bestie we are going to get you through it π
π NAME π
std::weak_ordering β std::weak_ordering
β¨ Synopsis β¨
Defined in header <compare>
class weak_ordering; (since C++20)
The class type std::weak_ordering is the result type of a three-way comparison that:
- Admits all six relational operators (
==,!=,<,<=,>,>=). - Does not imply substitutability: if
ais equivalent tob,f(a)may not be equivalent tof(b), wherefdenotes a function that reads only comparison-salient state that is accessible via the argument's public const members. In other words, equivalent values may be distinguishable. - Does not allow incomparable values: exactly one of
a < b,a == b, ora > bmust be true.
π Constants π
The type std::weak_ordering has three valid values, implemented as const static data members of its type:
lessβinline constexpr[static]member constant: a valid value of the typestd::weak_orderingindicating less-than (ordered before) relationship (public static member constant).equivalentβinline constexpr[static]member constant: a valid value of the typestd::weak_orderingindicating equivalence (neither ordered before nor ordered after) (public static member constant).greaterβinline constexpr[static]member constant: a valid value of the typestd::weak_orderingindicating greater-than (ordered after) relationship (public static member constant).
π Conversions π
std::weak_ordering is implicitly-convertible to std::partial_ordering, while std::strong_ordering is implicitly-convertible to weak_ordering.
operator partial_orderingβ implicit conversion tostd::partial_ordering(public member function)
π std::weak_ordering::operator partial_ordering π
constexpr operator partial_ordering() const noexcept;
Return value
std::partial_ordering::less if v is less, std::partial_ordering::greater if v is greater, std::partial_ordering::equivalent if v is equivalent.
π₯ Comparisons π₯
Comparison operators are defined between values of this type and literal 0. This supports the expressions a <=> b == 0 or a <=> b < 0 that can be used to convert the result of a three-way comparison operator to a boolean relationship; see std::is_eq, std::is_lt, etc.
These functions are not visible to ordinary unqualified or qualified lookup, and can only be found by argument-dependent lookup when std::weak_ordering is an associated class of the arguments.
π Undefined behavior alert: the behavior of a program that attempts to compare aweak_orderingwith anything other than the integer literal0is undefined. Not βkinda undefined.β Not βundefined-ish.β UNDEFINED. Do not do it, bestie.
operator==,operator<,operator>,operator<=,operator>=,operator<=>β compares with zero or aweak_ordering(function)
π operator== π
friend constexpr bool operator==( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr bool operator==( weak_ordering v, weak_ordering w ) noexcept = default;(2)
Parameters
v,wβstd::weak_orderingvalues to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
trueifvis equivalent,falseifvis less or greatertrueif both parameters hold the same value,falseotherwise
π operator< π
friend constexpr bool operator<( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr bool operator<( /*unspecified*/ u, weak_ordering v ) noexcept;(2)
Parameters
vβ astd::weak_orderingvalue to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
trueifvis less, andfalseifvis greater or equivalenttrueifvis greater, andfalseifvis less or equivalent
π operator<= π
friend constexpr bool operator<=( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr bool operator<=( /*unspecified*/ u, weak_ordering v ) noexcept;(2)
Parameters
vβ astd::weak_orderingvalue to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
trueifvis less or equivalent, andfalseifvis greatertrueifvis greater or equivalent, andfalseifvis less
π operator> π
friend constexpr bool operator>( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr bool operator>( /*unspecified*/ u, weak_ordering v ) noexcept;(2)
Parameters
vβ astd::weak_orderingvalue to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
trueifvis greater, andfalseifvis less or equivalenttrueifvis less, andfalseifvis greater or equivalent
π operator>= π
friend constexpr bool operator>=( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr bool operator>=( /*unspecified*/ u, weak_ordering v ) noexcept;(2)
Parameters
vβ astd::weak_orderingvalue to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
trueifvis greater or equivalent, andfalseifvis lesstrueifvis less or equivalent, andfalseifvis greater
π operator<=> π
friend constexpr weak_ordering operator<=>( weak_ordering v, /*unspecified*/ u ) noexcept;(1)friend constexpr weak_ordering operator<=>( /*unspecified*/ u, weak_ordering v ) noexcept;(2)
Parameters
vβ astd::weak_orderingvalue to checkuβ an unused parameter of any type that accepts literal zero argument
Return value
v.greaterifvis less,lessifvis greater, otherwisev.
πΈ Example πΈ
This section is incomplete Reason: no example
π¦ See also π¦
strong_ordering(C++20) β the result type of 3-way comparison that supports all 6 operators and is substitutable (class)partial_ordering(C++20) β the result type of 3-way comparison that supports all 6 operators, is not substitutable, and allows incomparable values (class)
π Category π
- Todo no example
made with π from cppreference.com, page date 2024.06.10 β mwah, go slay your comparisons π«Άβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms