std::meta::members_of
|
Определено в заголовочном файле <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) |
получает доступные прямые базы отраженного класса (функция) |