Namespaces
Variants

std:: is_implicit_lifetime

From cppreference.net
Metaprogramming library
Type traits
Type categories
(C++11)
(C++11) ( DR* )
Type properties
(C++11)
(C++11)
(C++14)
is_implicit_lifetime
(C++23)
(C++11) (deprecated in C++26)
(C++11) ( until C++20* )
(C++11) (deprecated in C++20)
(C++11)
Type trait constants
Metafunctions
(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 T >
struct is_implicit_lifetime ;
(depuis C++23)

std::is_implicit_lifetime est un UnaryTypeTrait .

Si T est un implicit-lifetime type , fournit la constante membre value égale à true . Pour tout autre type, value est false .

Le comportement est indéfini si T est un type incomplet autre qu'un type tableau ou (éventuellement qualifié cv) void .

Si le programme ajoute des spécialisations pour std::is_implicit_lifetime ou std::is_implicit_lifetime_v , le comportement est indéfini.

Table des matières

Paramètres du modèle

T - un type à vérifier

Modèle de variable d'assistance

template < class T >
constexpr bool is_implicit_lifetime_v = is_implicit_lifetime < T > :: value ;
(depuis C++23)

Hérité de std:: integral_constant

Constantes membres

value
[static]
true si T est un type à durée de vie implicite, 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 >

Notes

Macro de test de fonctionnalité Valeur Norme Fonctionnalité
__cpp_lib_is_implicit_lifetime 202302L (C++23) std::is_implicit_lifetime

Exemple

// Les types suivants sont collectivement appelés types à durée de vie implicite :
// * types scalaires :
//     * types arithmétiques
//     * types énumération
//     * types pointeur
//     * types pointeur-sur-membre
//     * std::nullptr_t
// * types classe à durée de vie implicite
//     * est un agrégat dont le destructeur n'est pas fourni par l'utilisateur
//     * a au moins un constructeur éligible trivial et un destructeur trivial,
//       non supprimé
// * types tableau
// * versions qualifiées cv de ces types.
#include <type_traits>
static_assert(std::is_implicit_lifetime_v<int>); // le type arithmétique est un type scalaire
static_assert(std::is_implicit_lifetime_v<const int>); // type scalaire qualifié cv
enum E { e };
static_assert(std::is_implicit_lifetime_v<E>); // le type énumération est un type scalaire
static_assert(std::is_implicit_lifetime_v<int*>); // le type pointeur est un type scalaire
static_assert(std::is_implicit_lifetime_v<std::nullptr_t>); // type scalaire
struct S { int x, y; };
// S est une classe à durée de vie implicite : un agrégat sans destructeur fourni par l'utilisateur
static_assert(std::is_implicit_lifetime_v<S>);
static_assert(std::is_implicit_lifetime_v<int S::*>); // pointeur-sur-membre
struct X { ~X() = delete; };
// X n'est pas une classe à durée de vie implicite à cause du destructeur supprimé
static_assert(!std::is_implicit_lifetime_v<X>);
static_assert(std::is_implicit_lifetime_v<int[8]>); // type tableau
static_assert(std::is_implicit_lifetime_v<volatile int[8]>); // type tableau qualifié cv
int main() {}

Voir aussi

(C++11)
vérifie si un type est un type scalaire
(modèle de classe)
(C++11)
vérifie si un type est un type tableau
(modèle de classe)
vérifie si un type est un type agrégé
(modèle de classe)
crée implicitement des objets dans un stockage donné avec réutilisation de la représentation objet
(modèle de fonction)