Библиотека отражений (начиная с C++26)
От ru.cppreference.net
Средства, определённые в этом разделе, поддерживают рефлексивное программирование, позволяя программам на C++ как наблюдать структуру самой программы, так и генерировать код, зависящий от этих наблюдений.
Основной язык
Библиотека отражений работает совместно с двумя ключевыми возможностями языка:
Библиотека отражений
| Этот раздел не завершён |
Определён в заголовке
<meta> | |
(C++26) |
тип значений отражения (typedef) |
(C++26) |
исключение, выбрасываемое функциями отражения (class) |
Продвижение памяти времени компиляции в статическую память | |
(C++26) |
продвигает строку времени компиляции в статическую память, возвращая отражение, представляющее статическую строку (function template) |
(C++26) |
продвигает массив времени компиляции в статическую память, возвращая отражение, представляющее статический массив (function template) |
(C++26) |
продвигает строку времени компиляции в статическую память, возвращая указатель на первый символ статической строки (function template) |
(C++26) |
продвигает массив времени компиляции в статическую память, возвращая span статического массива (function template) |
(C++26) |
продвигает значение времени компиляции в статическую память, возвращая указатель на статический объект (function template) |
Представления операторов | |
(C++26) |
идентифицирует перегружаемые операторы (enum) |
(C++26) |
идентифицирует оператор, представленный отражением (function) |
(C++26) |
преобразует перечислитель meta::operators в его символьное имя (function) |
Имена и местоположения отражения | |
(C++26) |
проверяет, представляет ли отражение сущность, имеющую идентификатор (function) |
(C++26) |
если отражаемая сущность имеет идентификатор, получает её имя (function) |
| получает строку, подходящую для идентификации отражаемой сущности (function) | |
(C++26) |
получает исходное местоположение отражаемой сущности (function) |
Запросы отражения | |
(C++26) |
получает отражение типа отражаемой сущности (function) |
(C++26) |
получает отражение объекта отражаемой переменной (function) |
(C++26) |
получает отражение константного значения отражаемой сущности (function) |
| проверяет, представляет ли отражение открытый, защищённый или закрытый член или базовый класс (function) | |
(C++26) |
проверяет, представляет ли отражение виртуальную функцию-член или виртуальный базовый класс (function) |
(C++26) |
проверяет, представляет ли отражение чистую виртуальную функцию-член (function) |
(C++26) |
проверяет, представляет ли отражение функцию-член, которая переопределяет другую функцию-член (function) |
(C++26) |
проверяет, представляет ли отражение конечный класс или конечную функцию-член (function) |
(C++26) |
проверяет, представляет ли отражение удалённую функцию (function) |
(C++26) |
проверяет, представляет ли отражение функцию по умолчанию (function) |
(C++26) |
проверяет, представляет ли отражение предоставленную пользователем функцию (function) |
(C++26) |
проверяет, представляет ли отражение объявленную пользователем функцию (function) |
(C++26) |
проверяет, представляет ли отражение функцию-член, объявленную как explicit (function) |
(C++26) |
проверяет, представляет ли отражение функцию или тип функции с noexcept (function) |
(C++26) |
проверяет, представляет ли отражение битовое поле или описание элемента данных битового поля (function) |
(C++26) |
проверяет, представляет ли отражение перечислитель (function) |
(C++26) |
проверяет, представляет ли отражение аннотацию (function) |
(C++26) |
проверяет, представляет ли отражение тип const или тип функции с квалификатором const (function) |
(C++26) |
проверяет, представляет ли отражение тип volatile или тип функции с квалификатором volatile (function) |
(C++26) |
проверяет, представляет ли отражение mutable нестатический элемент данных (function) |
| проверяет, является ли отражаемая сущность функцией-членом с квалификацией ref (function) | |
| проверяет, имеет ли отражаемая сущность длительность хранения (function) | |
| проверяет, имеет ли отражаемая сущность связывание (function) | |
(C++26) |
проверяет, имеет ли отражаемая сущность связывание с языком "C" language linkage (extern "C") (function) |
(C++26) |
проверяет, представляет ли отражение завершённый тип (function) |
(C++26) |
проверяет, полностью ли определён список членов отражаемого типа (function) |
(C++26) |
проверяет, представляет ли отражение переменную (function) |
(C++26) |
проверяет, представляет ли отражение тип (function) |
(C++26) |
проверяет, представляет ли отражение пространство имён (function) |
(C++26) |
проверяет, представляет ли отражение псевдоним типа (function) |
(C++26) |
проверяет, представляет ли отражение псевдоним пространства имён (function) |
(C++26) |
проверяет, представляет ли отражение функцию (function) |
(C++26) |
проверяет, представляет ли отражение функцию преобразования (function) |
(C++26) |
проверяет, представляет ли отражение перегрузку оператора (function) |
(C++26) |
проверяет, представляет ли отражение оператор пользовательского литерала (function) |
(C++26) |
проверяет, представляет ли отражение специальную функцию-член (function) |
| проверяет, является ли отражаемая сущность конструктором данного вида (function) | |
| проверяет, является ли отражаемая сущность оператором присваивания данного вида (function) | |
(C++26) |
проверяет, является ли отражаемая сущность деструктором (function) |
(C++26) |
проверяет, представляет ли отражение параметр функции (function) |
(C++26) |
проверяет, представляет ли отражение явный объектный параметр (function) |
(C++26) |
проверяет, имеет ли отражённый параметр функции аргумент по умолчанию (function) |
(C++26) |
проверяет, представляет ли отражение функцию или тип функции с параметром-многоточием (function) |
(C++26) |
проверяет, представляет ли отражение (скалярное) значение (function) |
(C++26) |
проверяет, представляет ли отражение статический объект (function) |
(C++26) |
проверяет, представляет ли отражение структурированную привязку (function) |
(C++26) |
проверяет, представляет ли отражение член класса (function) |
(C++26) |
проверяет, представляет ли отражение член пространства имён (function) |
(C++26) |
проверяет, представляет ли отражение нестатический элемент данных (function) |
(C++26) |
проверяет, представляет ли отражение статический член класса (function) |
(C++26) |
проверяет, представляет ли отражение отношение прямого базового класса (function) |
| проверяет, имеет ли отражённый нестатический элемент данных инициализатор по умолчанию (function) | |
(C++26) |
проверяет, содержится ли отражаемая сущность в области видимости (function) |
(C++26) |
получает область видимости, содержащую отражаемую сущность (function) |
(C++26) |
получает отражение базовой сущности отражённого псевдонима типа/пространства имён (function) |
(C++26) |
проверяет, получена ли отражаемая сущность путём подстановки аргументов шаблона в шаблон (function) |
(C++26) |
получает отражение шаблона, использованного для инстанцирования отражаемой сущности (function) |
(C++26) |
получает аргументы шаблона отражаемой сущности (function) |
(C++26) |
получает параметры отражённой функции (function) |
(C++26) |
получает переменную отражённого параметра функции в определении функции (function) |
(C++26) |
получает возвращаемый тип отражённой функции (function) |
Запросы доступности | |
(C++26) |
представляет контекст для проверки доступа (class) |
(C++26) |
проверяет, доступен ли член в заданном контексте (function) |
| проверяет, есть ли у отражённого класса недоступные нестатические элементы данных (function) | |
(C++26) |
проверяет, есть ли у отражённого класса недоступные прямые базовые классы (function) |
(C++26) |
проверяет, есть ли у отражённого класса недоступные нестатические элементы данных или прямые базовые классы (function) |
Идентификация области видимости | |
(C++26) |
возвращает отражение охватывающей функции (function) |
(C++26) |
возвращает отражение охватывающего класса (function) |
(C++26) |
возвращает отражение охватывающего пространства имён (function) |
Запросы членов отражения | |
(C++26) |
получает доступные прямые члены отражённого класса или пространства имён (function) |
(C++26) |
получает доступные прямые базовые классы отражённого класса (function) |
(C++26) |
получает доступные статические элементы данных отражённого класса (function) |
(C++26) |
получает доступные нестатические элементы данных отражённого класса (function) |
(C++26) |
получает доступные подобъекты базовых классов и нестатические элементы данных отражённого класса (function) |
(C++26) |
получает перечислители отражённого перечислительного типа (function) |
Запросы компоновки отражения | |
(C++26) |
возвращает смещение (члена или базового) подобъекта относительно его охватывающего класса (function) |
(C++26) |
возвращает размер в байтах отражённого объекта или типа (function) |
(C++26) |
возвращает выравнивание отражённого объекта или типа (function) |
(C++26) |
возвращает размер в битах отражённого объекта или типа (function) |
Отражение аннотаций | |
(C++26) |
получает аннотации, применяемые к отражаемой сущности (function) |
(C++26) |
получает аннотации, которые применяются к отражаемой сущности и имеют указанный тип (function) |
Извлечение значений | |
(C++26) |
извлекает значение отражаемой сущности (function template) |
Подстановка отражения | |
(C++26) |
определяет диапазон значений отражения (concept) |
(C++26) |
проверяет, могут ли отражённые аргументы быть подставлены в отражённый шаблон (function template) |
(C++26) |
получает отражение результата подстановки отражённых аргументов в отражённый шаблон (function template) |
Отражение результата выражения | |
(C++26) |
возвращает отражение, представляющее значение или объект параметра шаблона, подходящее для использования в качестве константного аргумента шаблона (function template) |
(C++26) |
возвращает отражение, представляющее объект, подходящее для использования в качестве константного аргумента шаблона (function template) |
(C++26) |
возвращает отражение, представляющее функцию, подходящее для использования в качестве константного аргумента шаблона (function template) |
Генерация определения класса | |
(C++26) |
создаёт описание элемента данных для использования с вставленными объявлениями (function) |
(C++26) |
проверяет, представляет ли отражение описание элемента данных (function) |
(C++26) |
определяет агрегатный тип из последовательности описаний элементов данных (function template) |
Первичные категории типов | |
Составные категории типов | |
Свойства типов | |
Запросы свойств типов | |
Отношения типов | |
Модификации const-volatile | |
Модификации ссылок | |
Модификации знака | |
Модификации массивов | |
Модификации указателей | |
Другие преобразования | |
Проверка строковых литералов | |
(C++26) |
проверяет, указывает ли указатель на строковый литерал (function) |
Примечания
| Макрос проверки возможности | Значение | Стандарт | Возможность |
|---|---|---|---|
__cpp_lib_reflection |
202506L |
(C++26) | <meta>: Поддержка библиотеки отражений. Constexpr-исключения как обработка ошибок в отражении. |
Пример
| Этот раздел не завершён Причина: нет примера |