Namespaces
Variants

std::meta::members_of

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

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

Возвращает std::vector, содержащий отражения членов типа класса или пространства имен, представленного r, отфильтрованные по контексту доступа ctx.

Каждое отражение m в результате представляет доступный член, который имеет допустимое объявление и является представимым (см. ниже). Доступность определяется как если бы с помощью std::meta::is_accessible(m, ctx).

Пусть Q будет типом класса или пространством имен, представленным r.

Объявление является допустимым, если оно удовлетворяет всем следующим требованиям:

  • Оно находится в области видимости Q. (Например, объявление функции в области видимости блока не является допустимым.)
  • Оно не является объявлением friend.
  • Оно не является объявлением типа замыкания.
  • Оно не является объявлением (частичной или полной) специализации шаблона.
  • Если Q является типом класса, который не является типом замыкания, объявление вводит прямой член Q, который не является вариантным членом вложенного анонимного объединения Q.
  • Если Q является типом замыкания, объявление вводит оператор вызова функции или шаблон оператора вызова функции.

Реализация определяет, являются ли объявления других членов типа замыкания Q допустимыми.

Учитываются только объявления до вызова members_of.

Член является представимым, если он является одним из следующих:

  • тип класса или перечисления
  • псевдоним типа
  • шаблон класса, шаблон функции, шаблон переменной, шаблон псевдонима или концепт
  • переменная или ссылка, тип которой не содержит невыведенный заполнитель типа
  • функция F, для которой:
  • тип F не содержит невыведенный заполнитель типа;
  • ограничения (если есть) F удовлетворены; и
  • если F является потенциальным деструктором, то это выбранный деструктор
  • член данных
  • пространство имен
  • псевдоним пространства имен

Эта функция обрабатывает безымянные битовые поля, объявленные в области видимости Q, как члены данных с тем же доступом.

Отражения членов класса и безымянных битовых полей появляются в порядке их объявления. Неявно объявленные специальные члены появляются после любых пользовательских членов.

Параметры

r - отражение полного типа класса или пространства имен
ctx - контекст доступа

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

std::vector значений отражений, представляющих члены класса или члены пространства имен.

Исключения

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

Пример

См. также

(C++26)
получает доступные прямые базы отраженного класса
(функция)