Namespaces
Variants

std::meta::is_complete_type

Depuis fr.cppreference.net
< cpp | meta
 
 
 
Bibliothèque de réflexion
 
Types de réflexion et requêtes
Requêtes de réflexion
Requêtes de disposition de réflexion
Propriétés de type
Requêtes de propriété de type
 
Défini dans l'en-tête <meta>
consteval bool is_complete_type( std::meta::info r );
(depuis C++26)

Détermine si la réflexion r représente un type complet.

Formellement, renvoie true si std::meta::is_type(r) est true et qu'il existe un point dans le contexte d'évaluation à partir duquel le type représenté par std::meta::dealias(r) n'est pas un type incomplet. Sinon, renvoie false.

Paramètres

r - une réflexion à examiner

Valeur de retour

true si r représente un type complet, false sinon

Notes

Un type énumération est complet si son type sous-jacent est connu. Pour vérifier si sa liste d'énumérateurs est complètement définie, voir std::meta::is_enumerable_type.

enum E : int;
static_assert(std::meta::is_complete_type(^^E));
static_assert(!std::meta::is_enumerable_type(^^E));

enum E : int { e };
static_assert(std::meta::is_enumerable_type(^^E));

Exemple

#include <meta>

struct A;    // incomplete type
struct B {}; // complete type

static_assert(std::meta::is_complete_type(^^A) == false);
static_assert(std::meta::is_complete_type(^^B) == true);

template <typename>
struct C; // incomplete class template

template <>
struct C<int> {}; // complete explicit template specialization

template <>
struct C<long>; // incomplete explicit template specialization

static_assert(std::meta::is_complete_type(^^C<long>) == false);
static_assert(std::meta::is_complete_type(^^C<char>) == false);
static_assert(std::meta::is_complete_type(^^C<int>) == true);

int main() {}

Voir aussi

(C++26)
vérifie si la réflexion représente un type
(fonction)