std::partial_ordering
| Definido en el archivo de encabezado <compare>
|
||
class partial_ordering; |
(desde C++20) | |
El tipo clase std::partial_ordering (ordenamiento parcial) es el tipo resultado de una comparación de tres vías que
- permite todos los seis operadores relacionales (==, !=, <, <=, >, >=);
- permite valores incomparables: a < b, a == b, y a > b pueden todos ser falso.
Constantes
El tipo std::partial_ordering tiene cuatro valores válidos, implementados como datos miembro const static de su tipo:
| Constante miembro | Definición |
less(inline constexpr) [estático] |
Un valor válido de tipo std::partial_ordering que indica una relación menor-que (ordenado antes). (constante miembro pública estática) |
equivalent(inline constexpr) [estático] |
Un valor válido de tipo std::partial_ordering que indica equivalencia (ordenado ni antes ni después). (constante miembro pública estática) |
greater(inline constexpr) [estático] |
Un valor válido de tipo std::partial_ordering que indica una relación mayor-que (ordenado después). (constante miembro pública estática) |
unordered(inline constexpr) [estático] |
Un valor válido de tipo std::partial_ordering que indica una relación con un valor incomparable. (constante miembro pública estática) |
Conversiones
std::partial_ordering no puede ser convertido implícitamente a otros tipos de categoría 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 están definidos entre valores de este tipo y el literal 0. Esto soporta las expresiones a <=> b == 0 o a <=> b < 0, que pueden usarse para convertir el resultado de una comparación de tres vías a una relación Booleana; véase std::is_eq, std::is_lt, etc.
Estas funciones no son visibles a una búsqueda no calificada o calificada, y pueden encontrarse solamente mediante la búsqueda dependiente de argumento 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 no está definido.
Se compara con cero o un partial_ordering. (función) |
operator==
friend constexpr bool operator==(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr bool operator==(partial_ordering v, partial_ordering w) noexcept = default; |
(2) | |
Parámetros
| v, w | - | Valores std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
true si v es equivalent, false si v es less, greater, o unordered.true si ambos parámetros albergan el mismo valor; de lo contrario, false.
operator<
friend constexpr bool operator<(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr bool operator<(/*no especificado*/ u, partial_ordering v) noexcept; |
(2) | |
Parámetros
| v | - | Un valor std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
true si v es less, y false si v es greater, equivalent, o unordered.true si v es greater, y false si v es less, equivalent, o unordered.
operator<=
friend constexpr bool operator<=(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr bool operator<=(/*no especificado*/ u, partial_ordering v) noexcept; |
(2) | |
Parámetros
| v | - | Un valor std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
true si v es less o equivalent, y false si v es greater o unordered.true si v es greater o equivalent, y false si v es less o unordered.
operator>
friend constexpr bool operator>(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr bool operator>(/*no especificado*/ u, partial_ordering v) noexcept; |
(2) | |
Parámetros
| v | - | Un valor std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
true si v es greater, y false si v es less, equivalent, o unordered.true si v es less, y false si v es greater, equivalent, o unordered.
operator>=
friend constexpr bool operator>=(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr bool operator>=(/*no especificado*/ u, partial_ordering v) noexcept; |
(2) | |
Parámetros
| v | - | Un valor std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
true si v es greater o equivalent, y false si v es less o unordered.true si v es less o equivalent, y false si v es greater o unordered.
operator<=>
friend constexpr partial_ordering operator<=>(partial_ordering v, /*no especificado*/ u) noexcept; |
(1) | |
friend constexpr partial_ordering operator<=>(/*no especificado*/ u, partial_ordering v) noexcept; |
(2) | |
Parámetros
| v | - | Un valor std::partial_ordering a comprobar.
|
| u | - | Un parámetro sin usar de cualquier tipo que acepte el literal cero como argumento. |
Valor de retorno
v.greater si v es less, less si v es greater; de lo contrario, v.
Notas
El operador integrado <=> entre valores de punto flotante utiliza este ordenamiento: el cero positivo y el cero negativo se comparan como equivalentes, pero pueden distinguirse, y los valores NaN se comparan como no ordenados con cualquier otro valor.
Ejemplo
| Esta sección está incompleta Razón: sin ejemplo |
Véase también
(C++20) |
El tipo del resultado de una comparación de tres vías que soporta todos los 6 operadores y es sustituible. (clase) |
(C++20) |
El tipo del resultado de una comparación de tres vías que soporta todos los 6 operadores y no es sustituible. (clase) |