std::meta::bases_of
Определён в заголовке <meta> | ||
|---|---|---|
consteval std::vector<std::meta::info>
bases_of( std::meta::info type, std::meta::access_context ctx );
| (начиная с C++26) |
Возвращает std::vector, содержащий отражения, соответствующие спецификаторам базовых классов класса, представленного type, с фильтрацией по контексту доступа ctx.
Пусть C — тип класса, представленный std::meta::dealias(type). Каждое значение отражения b в результате представляет доступное отношение прямого базового класса между C и одним из базовых классов C. Доступность определяется так, как если бы использовался std::meta::is_accessible(b, ctx). Значения отражения располагаются в том же порядке, в котором соответствующие базовые классы указаны в списке базовых классов в определении C.
Отношение прямого базового класса обычно представляется упорядоченной парой (D, B), где:
- D — производный класс.
- B — прямой базовый класс, указанный спецификатором базового класса в определении D.
Функции std::meta::parent_of и std::meta::type_of возвращают соответственно производный класс и базовый класс этого отношения.
Параметры
| type | - | значение отражения, представляющее полный тип класса или его псевдоним типа |
| ctx | - | контекст доступа |
Возвращаемое значение
std::vector значений отражения, представляющий отношения прямых базовых классов.
Исключения
Выбрасывает std::meta::exception, если std::meta::dealias(type) не представляет тип класса, являющийся полным в некоторой точке контекста вычисления.
Примечания
Если type представляет тип объединения, результатом является пустой вектор.
Пример
См. также
|
(C++26) | проверяет, представляет ли отражение отношение прямого базового класса (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/bases_of