Definido en el encabezado
template<classB>structnegation;
(1) (desde C++17)

Forma la negación lógica del rasgo tipo. B.

El tipo std::negation es un UnaryTypeTrait con una BaseCharacteristic de std::bool_constant<!bool(B::value)>.

Parámetros de la plantilla

B cualquier tipo tal que la expresión bool(B::value) es una expresión constante válida

Plantilla de variable auxiliar

template<classB>inlineconstexprbool negation_v = negation<B>::value;
(desde C++17)

Heredado de std::integral_constant

constantes miembro

valor[static] true Si B tiene un miembro ::value es decir false cuando se convierte explícitamente en bool , false de lo contrario
(público static miembro constante)

Funciones de los miembros

operador bool convierte el objeto en booldevoluciones value
(función de miembro público)
operador()(C++14) devoluciones value
(función de miembro público)

Tipos de miembros

Tipo Definición
value_type bool
type std::integral_constant<bool, value>

Posible implementación

template<classB>structnegation:std::bool_constant<!bool(B::value)>;

Ejemplo

#include#includestatic_assert(
    std::is_same<
        std::bool_constant<false>,typenamestd::negation<std::bool_constant<true>>::type>::value,"");static_assert(
    std::is_same<
        std::bool_constant<true>,typenamestd::negation<std::bool_constant<false>>::type>::value,"");intmain()
    std::cout << std::boolalpha;
    std::cout << std::negation<std::bool_constant<true>>::value <<'n';
    std::cout << std::negation<std::bool_constant<false>>::value <<'n';

Producción:

false
true

Ver también

conjunción(C++17) metafunción lógica AND variádica
(plantilla de clase)
disyunción(C++17) metafunción OR lógica variádica
(plantilla de clase)
constante_integralconstante_bool(C++11)(C++17) constante de tiempo de compilación del tipo especificado con valor especificado
(plantilla de clase)