Spec-Zone.ru › C++

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. (Например, объявление функции в области видимости блока не является допустимым.)
  • Оно не является объявлением друга.
  • Оно не является объявлением типа замыкания.
  • Оно не является объявлением специализации шаблона (частичной или полной).
  • Если Q является типом класса, не являющимся типом замыкания, объявление вводит прямой член Q, который не является вариантным членом вложенного анонимного объединения Q.
  • Если Q является типом замыкания, объявление вводит оператор вызова функции или шаблон оператора вызова функции.

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

Рассматриваются только объявления, сделанные до вызова members_of.

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

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

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

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

Параметры

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

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

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

Исключения

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

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/members_of

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API