std::meta::is_complete_type
Von de.cppreference.net
| Definiert in Header <meta>
|
||
consteval bool is_complete_type( std::meta::info r );
|
(seit C++26) | |
Stellt fest, ob die Reflexion r einen vollständigen Typ darstellt.
Formal gibt true zurück, wenn std::meta::is_type(r) true ist und es einen Punkt im Auswertungskontext gibt, von dem aus der von std::meta::dealias(r) dargestellte Typ kein unvollständiger Typ ist. Andernfalls gibt false zurück.
Parameter
| r | - | eine zu untersuchende Reflexion |
Rückgabewert
true wenn r einen vollständigen Typ darstellt, false andernfalls
Anmerkungen
Ein Aufzählungstyp ist vollständig, wenn sein zugrunde liegender Typ bekannt ist. Um zu überprüfen, ob seine Liste der Enumeratoren vollständig definiert ist, siehe 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));
Beispiel
Diesen Code ausführen
#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() {}
Siehe auch
(C++26) |
prüft, ob Reflexion einen Typ darstellt (Funktion) |