std::meta::is_complete_type
Desde es.cppreference.net
| Definido en el encabezado <meta>
|
||
consteval bool is_complete_type( std::meta::info r );
|
(desde C++26) | |
Determina si la reflexión r representa un tipo completo.
Formalmente, devuelve true si std::meta::is_type(r) es true y existe algún punto en el contexto de evaluación desde el cual el tipo representado por std::meta::dealias(r) no es un tipo incompleto. En caso contrario, devuelve false.
Parámetros
| r | - | una reflexión a examinar |
Valor de retorno
true si r representa un tipo completo, false en caso contrario
Notas
Un tipo de enumeración es completo si se conoce su tipo subyacente. Para comprobar si su lista de enumeradores está completamente definida, consulte 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));
Ejemplo
Ejecutar este código
#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() {}
Véase también
(C++26) |
comprueba si la reflexión representa un tipo (función) |