std::meta::is_complete_type
Depuis fr.cppreference.net
| 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
Exécuter ce code
#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) |