Spec-Zone.ru › C++

std::meta::is_compound_type

Определён в заголовке <meta>
consteval bool is_compound_type( std::meta::info r );
(начиная с C++26)

Возвращает true, если r представляет составной тип (то есть массив, функцию, указатель на объект, указатель на функцию, указатель на объект-член, указатель на функцию-член, ссылку, класс, объединение или перечисление, включая любые варианты с квалификаторами cv). В противном случае возвращает false.

Параметры

r - значение рефлексии

Возвращаемое значение

true, если r представляет составной тип; в противном случае — false.

Исключения

Выбрасывает std::meta::exception, если r не представляет тип или псевдоним типа.

Пример

#include <meta>

static_assert(not is_compound_type(^^int));
static_assert(is_compound_type(^^int*));
static_assert(is_compound_type(^^int&));

void f();
static_assert(is_compound_type(^^decltype(f)));
static_assert(is_compound_type(^^decltype(&f)));

static_assert(is_compound_type(^^char[100]));

class C {};
static_assert(is_compound_type(^^C));

union U {};
static_assert(is_compound_type(^^U));

enum struct E { e };
static_assert(is_compound_type(^^E));
static_assert(is_compound_type(^^decltype(E::e)));

struct S
{
    int i : 8;
    int j;
    void foo();
};
static_assert(not is_compound_type(^^decltype(S::i)));
static_assert(not is_compound_type(^^decltype(S::j)));
static_assert(is_compound_type(^^decltype(&S::j)));
static_assert(is_compound_type(^^decltype(&S::foo)));

int main() {}

См. также

is_array_type
(C++26)
проверяет, является ли отражённый тип типом массива
(функция)
is_function_type
(C++26)
проверяет, является ли отражённый тип типом функции
(функция)
is_pointer_type
(C++26)
проверяет, является ли отражённый тип типом указателя
(функция)
is_member_pointer_type
(C++26)
проверяет, представляет ли рефлексия тип указателя на член
(функция)
is_member_object_pointer_type
(C++26)
проверяет, представляет ли рефлексия тип указателя на объект-член
(функция)
is_member_function_pointer_type
(C++26)
проверяет, представляет ли рефлексия тип указателя на функцию-член
(функция)
is_reference_type
(C++26)
проверяет, представляет ли рефлексия ссылку lvalue или ссылку rvalue
(функция)
is_class_type
(C++26)
проверяет, является ли отражённый тип типом класса, не являющегося объединением
(функция)
is_union_type
(C++26)
проверяет, является ли отражённый тип типом объединения
(функция)
is_enum_type
(C++26)
проверяет, является ли отражённый тип типом перечисления
(функция)
is_fundamental_type
(C++26)
проверяет, представляет ли рефлексия фундаментальный тип
(функция)
is_scalar_type
(C++26)
проверяет, является ли отражённый тип скалярным типом
(функция)
is_object_type
(C++26)
проверяет, является ли отражённый тип объектным типом
(функция)
is_compound
(C++11)
проверяет, является ли тип составным типом
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/is_compound_type

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API