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::partial_ordering(3) C++ Standard Libary std::partial_ordering(3)

std::partial_ordering - std::partial_ordering


Defined in header <compare>
class partial_ordering; (since C++20)


The class type std::partial_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.
* admits incomparable values: a < b, a == b, and a > b may all be false


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


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


std::partial_ordering cannot be implicitly converted to other comparison category
types, while both std::strong_ordering and std::weak_ordering are
implicitly-convertible to partial_ordering.


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::partial_ordering is an
associated class of the arguments.


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


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

operator==


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


v, w - std::partial_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, greater, or unordered
2) true if both parameters hold the same value, false otherwise

operator<


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


v - a std::partial_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, equivalent, or unordered
2) true if v is greater, and false if v is less, equivalent, or unordered

operator<=


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


v - a std::partial_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 or unordered
2) true if v is greater or equivalent, and false if v is less or unordered

operator>


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


v - a std::partial_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, equivalent, or unordered
2) true if v is less, and false if v is greater, equivalent, or unordered

operator>=


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


v - a std::partial_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 or unordered
2) true if v is less or equivalent, and false if v is greater or unordered

operator<=>


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


v - a std::partial_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.


The built-in operator<=> between floating-point values uses this ordering: the
positive zero and the negative zero compare equivalent, but can be distinguished,
and NaN values compare unordered with any other value.


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)
weak_ordering the result type of 3-way comparison that supports all 6 operators
(C++20) and is not substitutable
(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.