Ten en cuenta que en las ciencias cualquier problema casi siempre tiene diferentes resoluciones, pero nosotros aquí enseñaremos lo más óptimo y mejor.
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 bool devoluciones 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#include static_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) |
Acuérdate de que te concedemos valorar este tutorial .
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)