Files
2025-10-25 03:02:53 +03:00

4.3 KiB
Raw Permalink Blame History

[cmp.weakord]

17 Language support library [support]

17.12 Comparisons [cmp]

17.12.2 Comparison category types [cmp.categories]

17.12.2.3 Class weak_ordering [cmp.weakord]

1

#

The weak_ordering type is typically used as the result type of a three-way comparison operator ([expr.spaceship]) for a type that admits all of the six two-way comparison operators ([expr.rel], [expr.eq]) and for which equality need not imply substitutability.

🔗

namespace std {class weak_ordering {int value; // exposition only// exposition-only constructorsconstexpr explicit weak_ordering(ord v) noexcept : value(int(v)) {} // exposition onlypublic:// valid valuesstatic const weak_ordering less; static const weak_ordering equivalent; static const weak_ordering greater; // conversionsconstexpr operator partial_ordering() const noexcept; // comparisonsfriend constexpr bool operator==(weak_ordering v, unspecified) noexcept; friend constexpr bool operator==(weak_ordering v, weak_ordering w) noexcept = default; friend constexpr bool operator< (weak_ordering v, unspecified) noexcept; friend constexpr bool operator> (weak_ordering v, unspecified) noexcept; friend constexpr bool operator<=(weak_ordering v, unspecified) noexcept; friend constexpr bool operator>=(weak_ordering v, unspecified) noexcept; friend constexpr bool operator< (unspecified, weak_ordering v) noexcept; friend constexpr bool operator> (unspecified, weak_ordering v) noexcept; friend constexpr bool operator<=(unspecified, weak_ordering v) noexcept; friend constexpr bool operator>=(unspecified, weak_ordering v) noexcept; friend constexpr weak_ordering operator<=>(weak_ordering v, unspecified) noexcept; friend constexpr weak_ordering operator<=>(unspecified, weak_ordering v) noexcept; }; // valid values' definitionsinline constexpr weak_ordering weak_ordering::less(ord::less); inline constexpr weak_ordering weak_ordering::equivalent(ord::equivalent); inline constexpr weak_ordering weak_ordering::greater(ord::greater);}

🔗

constexpr operator partial_ordering() const noexcept;

2

#

Returns: value == 0 ? partial_ordering::equivalent :value < 0 ? partial_ordering::less : partial_ordering::greater

🔗

constexpr bool operator==(weak_ordering v, unspecified) noexcept; constexpr bool operator< (weak_ordering v, unspecified) noexcept; constexpr bool operator> (weak_ordering v, unspecified) noexcept; constexpr bool operator<=(weak_ordering v, unspecified) noexcept; constexpr bool operator>=(weak_ordering v, unspecified) noexcept;

3

#

Returns: v.value @ 0 for operator@.

🔗

constexpr bool operator< (unspecified, weak_ordering v) noexcept; constexpr bool operator> (unspecified, weak_ordering v) noexcept; constexpr bool operator<=(unspecified, weak_ordering v) noexcept; constexpr bool operator>=(unspecified, weak_ordering v) noexcept;

4

#

Returns: 0 @ v.value for operator@.

🔗

constexpr weak_ordering operator<=>(weak_ordering v, unspecified) noexcept;

5

#

Returns: v.

🔗

constexpr weak_ordering operator<=>(unspecified, weak_ordering v) noexcept;

6

#

Returns: v < 0 ? weak_ordering::greater : v > 0 ? weak_ordering::less : v.