std::meta::parent_of
Из ru.cppreference.net
| Определена в заголовке <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() {}
См. также
(C++26) |
проверяет, содержится ли отражённая сущность в области видимости (функция) |