Namespaces
Variants

std::meta::bases_of

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

Первичные категории типов
Составные категории типов
Свойства типов➜
Отношения типов
 
Типы и запросы отражения
Запросы отражения
Запросы компоновки отражения
Свойства типов
Запросы свойств типов
 
Определено в заголовке <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)
проверяет, представляет ли отражение отношение прямой базовый класс
(функция)