std:: partial_ordering
|
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
v
es
equivalente
,
false
si
v
es
less
,
greater
, 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
v
es
less
, y
false
si
v
es
greater
,
equivalent
, o
unordered
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
v
es
less
o
equivalent
, y
false
si
v
es
greater
o
unordered
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
v
es
greater
, y
false
si
v
es
less
,
equivalent
, o
unordered
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
v
es
greater
o
equivalent
, y
false
si
v
es
less
o
unordered
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
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
|
Esta sección está incompleta
Razón: sin ejemplo |
Véase también
|
(C++20)
|
el tipo de resultado de comparación de 3 vías que admite los 6 operadores y es sustituible
(class) |
|
(C++20)
|
el tipo de resultado de comparación de 3 vías que admite los 6 operadores y no es sustituible
(class) |