Namespaces
Variants

std:: negation

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
negation
(C++17)
Supported operations
Relationships and property queries
Type modifications
Type transformations
(C++11) (deprecated in C++23)
(C++11) (deprecated in C++23)
(C++11)
(C++11) ( until C++20* ) (C++17)

Compile-time rational arithmetic
Compile-time integer sequences
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)> { };
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` 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

métafonction logique ET variadique
(modèle de classe)
métafonction logique OU variadique
(modèle de classe)
constante de compilation de type spécifié avec valeur spécifiée
(modèle de classe)