Espacios de nombres
Variantes

std::common_comparison_category

De cppreference.com
 
 
Biblioteca de servicios
 
<tbody> </tbody>
Definido en el archivo de encabezado <compare>
template<class... Ts> struct common_comparison_category { using type = /* véase más abajo*/ ; };
(desde C++20)

La plantilla de clase std::common_comparison_category proporciona un alias (como la definición de tipo miembro type) para la categoría de comparación más fuerte a la cual todos los argumentos de plantilla Ts... pueden ser convertidos.


En detalle, el tipo de comparación común de una lista de n tipos T0...Tn-1 se define de la manera siguiente:

Parámetros de plantilla

...Ts - Una lista de tipos posiblemente vacía.

Plantilla auxiliar

<tbody> </tbody>
template< class... Ts > using common_comparison_category_t = typename common_comparison_category<Ts...>::type;
(desde C++20)

Tipos miembro

Tipo miembro Definición
type La categoría común de comparación más fuerte (como se definió anteriormente).

Posible implementación

namespace detail {

template<unsigned int>
struct common_cmpcat_base     { using type = void; };
template<>
struct common_cmpcat_base<0u> { using type = std::strong_ordering; };
template<>
struct common_cmpcat_base<2u> { using type = std::partial_ordering; };
template<>
struct common_cmpcat_base<4u> { using type = std::weak_ordering; };
template<>
struct common_cmpcat_base<6u> { using type = std::partial_ordering; };

} // namespace detail

template<class...Ts>
struct common_comparison_category :
    detail::common_cmpcat_base<(0u | ... | 
        (std::is_same_v<Ts, std::strong_ordering>  ? 0u :
         std::is_same_v<Ts, std::weak_ordering>    ? 4u :
         std::is_same_v<Ts, std::partial_ordering> ? 2u : 1u)
    )> {};

Ejemplo

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]
El tipo del resultado de una comparación de tres vías que soporta todos los 6 operadores, no es sustituible y permite valores incomparables.
(clase) [editar]