Namespaces
Variants

std::meta::is_complete_type

Desde es.cppreference.net
< cpp | meta
 
 
 
Biblioteca de reflexión
 
Tipos y consultas de reflexión
Consultas de reflexión
Consultas de diseño de reflexión
Propiedades de tipo
Consultas de propiedad de tipo
 
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

#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)