std:: negation
|
Défini dans l'en-tête
<type_traits>
|
||
|
template
<
class
B
>
struct negation ; |
(depuis C++17) | |
Forme la négation logique du trait de type B .
Le type std :: negation < B > est un UnaryTypeTrait avec une caractéristique de base de std:: bool_constant < ! bool ( B :: value ) > .
Si le programme ajoute des spécialisations pour
std::negation
ou
std::negation_v
, le comportement est indéfini.
Table des matières |
Paramètres du modèle
| B | - | tout type tel que l'expression bool ( B :: value ) soit une expression constante valide |
Modèle de variable d'assistance
|
template
<
class
B
>
constexpr bool negation_v = negation < B > :: value ; |
(depuis C++17) | |
Hérité de std:: integral_constant
Constantes membres
|
value
[static]
|
true
si
B
a un membre
::
value
qui est
false
lorsqu'il est explicitement converti en
bool
,
false
sinon
(constante membre publique statique) |
Fonctions membres
|
operator bool
|
convertit l'objet en
bool
, retourne
value
(fonction membre publique) |
|
operator()
(C++14)
|
retourne
value
(fonction membre publique) |
Types membres
| Type | Définition |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
Implémentation possible
template<class B> struct negation : std::bool_constant<!bool(B::value)> { }; |
` et contient des termes spécifiques au C++. Seul le texte environnant aurait été traduit, mais dans ce cas, il n'y a pas de texte visible à traduire en dehors du code.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_logical_traits
|
201510L
|
(C++17) | Traits de type d'opérateur logique |
Exemple
#include <type_traits> static_assert( std::is_same< std::bool_constant<false>, typename std::negation<std::bool_constant<true>>::type>::value, ""); static_assert( std::is_same< std::bool_constant<true>, typename std::negation<std::bool_constant<false>>::type>::value, ""); static_assert(std::negation_v<std::bool_constant<true>> == false); static_assert(std::negation_v<std::bool_constant<false>> == true); int main() {}
Voir aussi
|
(C++17)
|
métafonction logique ET variadique
(modèle de classe) |
|
(C++17)
|
métafonction logique OU variadique
(modèle de classe) |
|
(C++11)
(C++17)
|
constante de compilation de type spécifié avec valeur spécifiée
(modèle de classe) |