Espacios de nombres
Variantes
Acciones

std::partial_ordering

De cppreference.com
< cpp‎ | utility
 
 
Biblioteca de servicios
 
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.

Contenido

[editar]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)

[editar]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.

[editar]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.

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

operator==

friendconstexprbool operator==(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexprbool
    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

1)true si v es equivalent, false si v es less, greater, o unordered.
2)true si ambos parámetros albergan el mismo valor; de lo contrario, false.

operator<

friendconstexprbool operator<(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexprbool 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

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<=

friendconstexprbool operator<=(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexprbool 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

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>

friendconstexprbool operator>(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexprbool 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

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>=

friendconstexprbool operator>=(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexprbool 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

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<=>

friendconstexpr partial_ordering operator<=>(partial_ordering v, /*no especificado*/ u)noexcept;
(1)
friendconstexpr 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

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

[editar]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.

[editar]Ejemplo

[editar]Véase también

El tipo del resultado de una comparación de tres vías que soporta todos los 6 operadores y es sustituible.
(clase)[editar]
El tipo del resultado de una comparación de tres vías que soporta todos los 6 operadores y no es sustituible.
(clase)[editar]
close