Namespaces
Variants

std::meta::parent_of

Из ru.cppreference.net
< cpp | meta
 
 
 
Библиотека отражения
Запросы доступности членов
Идентификация области видимости
Запросы членов отражения
Отражение аннотаций
Извлечение значений
Подстановка отражения
Отражение результатов выражений
Генерация определения класса

Первичные категории типов
Составные категории типов
Свойства типов ➜
Отношения типов
 
Типы отражения и запросы
Запросы отражения
Запросы размещения отражения
Свойства типов
Запросы свойств типов
 
Определена в заголовке <meta>
consteval std::meta::info parent_of( std::meta::info r );
(since C++26)

Определяет наименьшую область видимости класса, перечисления, функции или пространства имён, которая содержит объявление того, что представляет r. Возвращает отражение этого класса/перечисления/функции/пространства имён.

Если r представляет нестатический элемент данных или безымянное битовое поле из анонимного объединения, результат представляет это объединение.

Если r представляет отношение прямого базового класса (т.е. элемент std::meta::bases_of(rc, ctx)), результат представляет производный класс в этом отношении.

Параметры

r - значение отражения

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

Отражение сущности, область видимости которой содержит объявление того, что представляет r.

Исключения

Выбрасывает std::meta::exception, если std::meta::has_parent(r) не является истинным.

Пример

#include <meta>

struct I {};

struct F : I
{
    union { int o; };

    enum N { A };
};

constexpr auto ctx = std::meta::access_context::current();
static_assert(std::meta::parent_of(^^F) == ^^::);
static_assert(std::meta::parent_of(std::meta::bases_of(^^F, ctx)[0]) == ^^F);
static_assert(std::meta::is_union_type(std::meta::parent_of(^^F::o)));
static_assert(std::meta::parent_of(^^F::N) == ^^F);
static_assert(std::meta::parent_of(^^F::A) == ^^F::N);

int main() {}

См. также

проверяет, содержится ли отражённая сущность в области видимости
(функция)