GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::weak_ordering(3) C++ Standard Libary std::weak_ordering(3)

std::weak_ordering - std::weak_ordering


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 a is equivalent to b, f(a) may not be
equivalent to f(b), where f denotes 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, or a > b must
be true


The type std::weak_ordering has three valid values, implemented as const static data
members of its type:


Member constant Definition
less(inline constexpr) a valid value of the type std::weak_ordering indicating
[static] less-than (ordered before) relationship
(public static member constant)
equivalent(inline constexpr) a valid value of the type std::weak_ordering indicating
[static] equivalence (neither ordered before nor ordered after)
(public static member constant)
greater(inline constexpr) a valid value of the type std::weak_ordering indicating
[static] greater-than (ordered after) relationship
(public static member constant)


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 to std::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.


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.


The behavior of a program that attempts to compare a weak_ordering with anything
other than the integer literal 0 is undefined.


operator==
operator<
operator> compares with zero or a weak_ordering
operator<= (function)
operator>=
operator<=>

operator==


friend constexpr bool operator==(weak_ordering v, /*unspecified*/ u) noexcept; (1)
friend constexpr bool operator==(weak_ordering v, weak_ordering w) noexcept = (2)
default;


v, w - std::weak_ordering values to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) true if v is equivalent, false if v is less or greater
2) true if both parameters hold the same value, false otherwise

operator<


friend constexpr bool operator<(weak_ordering v, /*unspecified*/ u) noexcept; (1)
friend constexpr bool operator<(/*unspecified*/ u, weak_ordering v) noexcept; (2)


v - a std::weak_ordering value to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) true if v is less, and false if v is greater or equivalent
2) true if v is greater, and false if v is 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)


v - a std::weak_ordering value to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) true if v is less or equivalent, and false if v is greater
2) true if v is greater or equivalent, and false if v is less

operator>


friend constexpr bool operator>(weak_ordering v, /*unspecified*/ u) noexcept; (1)
friend constexpr bool operator>(/*unspecified*/ u, weak_ordering v) noexcept; (2)


v - a std::weak_ordering value to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) true if v is greater, and false if v is less or equivalent
2) true if v is less, and false if v is 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)


v - a std::weak_ordering value to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) true if v is greater or equivalent, and false if v is less
2) true if v is less or equivalent, and false if v is greater

operator<=>


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


v - a std::weak_ordering value to check
u - an unused parameter of any type that accepts literal zero argument

Return value


1) v.
2) greater if v is less, less if v is greater, otherwise v.


This section is incomplete
Reason: no example


strong_ordering the result type of 3-way comparison that supports all 6 operators
(C++20) and is substitutable
(class)
partial_ordering the result type of 3-way comparison that supports all 6 operators,
(C++20) is not substitutable, and allows incomparable values
(class)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.