Namespaces
Variants

std:: partial_ordering

From cppreference.net
Utilities library
Definido en el encabezado <compare>
class partial_ordering ;
(desde C++20)

El tipo de clase std::partial_ordering es el tipo de resultado de una comparación de tres vías que:

  • Admite los seis operadores relacionales ( == , != , < , <= , > , >= ).
  • No implica sustituibilidad: si a es equivalente a b , f ( a ) puede no ser equivalente a f ( b ) , donde f denota una función que lee únicamente el estado relevante para la comparación que es accesible mediante los miembros públicos const del argumento. En otras palabras, valores equivalentes pueden ser distinguibles.
  • Admite valores incomparables : a < b , a == b , y a > b pueden ser todos false .

Contenidos

Constantes

El tipo std::partial_ordering tiene cuatro valores válidos, implementados como miembros de datos estáticos constantes de su tipo:

Nombre Definición
inline constexpr std :: partial_ordering less
[static]
un valor válido que indica relación de menor-que (ordenado antes)
(constante de miembro público estático)
inline constexpr std :: partial_ordering equivalent
[static]
un valor válido que indica equivalencia (ni ordenado antes ni ordenado después)
(constante de miembro público estático)
inline constexpr std :: partial_ordering greater
[static]
un valor válido que indica relación de mayor-que (ordenado después)
(constante de miembro público estático)
inline constexpr std :: partial_ordering unordered
[static]
un valor válido que indica relación con un valor incomparable
(constante de miembro público estático)

Conversiones

std::partial_ordering no puede convertirse implícitamente a otros tipos de categorías de comparación, mientras que tanto std::strong_ordering como std::weak_ordering son convertibles implícitamente a partial_ordering .

Comparaciones

Los operadores de comparación se definen entre valores de este tipo y el literal 0 . Esto permite expresiones como a <=> b == 0 o a <=> b < 0 que pueden utilizarse para convertir el resultado de un operador de comparación de tres vías a una relación booleana; consulte std::is_eq , std::is_lt , etc.

Estas funciones no son visibles para la búsqueda no calificada o calificada ordinaria, y solo pueden ser encontradas mediante búsqueda dependiente de argumentos cuando std::partial_ordering es una clase asociada de los argumentos.

El comportamiento de un programa que intenta comparar un partial_ordering con cualquier cosa que no sea el literal entero 0 está indefinido.

operator== operator< operator> operator<= operator>= operator<=>
compara con cero o un partial_ordering
(función)

operator==

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

Parámetros

v, w - std::partial_ordering valores a verificar
u - un parámetro no utilizado de cualquier tipo que acepte el argumento literal cero

Valor de retorno

1) true si v es equivalente , false si v es less , greater , o unordered
2) true si ambos parámetros contienen el mismo valor, false en caso contrario

operator<

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

Parámetros

v - un valor std::partial_ordering a verificar
u - un parámetro no utilizado de cualquier tipo que acepte el argumento literal cero

Valor de retorno

1) true si v es less , y false si v es greater , equivalent , o unordered
2) true si v es greater , y false si v es less , equivalent , o unordered

operator<=

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

Parámetros

v - un valor de tipo std::partial_ordering a verificar
u - un parámetro no utilizado de cualquier tipo que acepte el argumento de cero literal

Valor de retorno

1) true si v es less o equivalent , y false si v es greater o unordered
2) true si v es greater o equivalent , y false si v es less o unordered

operator>

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

Parámetros

v - un valor std::partial_ordering a verificar
u - un parámetro no utilizado de cualquier tipo que acepte el argumento literal cero

Valor de retorno

1) true si v es greater , y false si v es less , equivalent , o unordered
2) true si v es less , y false si v es greater , equivalent , o unordered

operator>=

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

Parámetros

v - un valor std::partial_ordering a verificar
u - un parámetro no utilizado de cualquier tipo que acepte el argumento de cero literal

Valor de retorno

1) true si v es greater o equivalent , y false si v es less o unordered
2) true si v es less o equivalent , y false si v es greater o unordered

operator<=>

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

Parámetros

v - un valor std::partial_ordering a verificar
u - un parámetro no utilizado de cualquier tipo que acepte argumento de cero literal

Valor de retorno

1) v .
2) greater si v es less , less si v es greater , de lo contrario v .

Notas

El built-in operator<=> entre valores de punto flotante utiliza este ordenamiento: el cero positivo y el cero negativo se comparan como equivalent , pero pueden distinguirse, y los valores NaN se comparan como unordered con cualquier otro valor.

Ejemplo

Véase también

el tipo de resultado de comparación de 3 vías que admite los 6 operadores y es sustituible
(class)
el tipo de resultado de comparación de 3 vías que admite los 6 operadores y no es sustituible
(class)