Namespaces
Variants

std::meta::type_of

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

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

Возвращает отражение, представляющее тип того, что представляет r.

Формально:

  • Если r представляет параметр функции (см. std::meta::parameters_of), возвращает отражение соответствующего типа в списке типов параметров функции.
  • Если r представляет значение, объект, переменную, функцию, нестатический элемент данных или безымянное битовое поле, возвращает отражение типа того, что представляет r.
  • Если r представляет аннотацию, возвращает std::meta::type_of(std::meta::constant_of(r)).
  • Если r представляет перечислитель перечисляемого типа E :
  • если type_of вызывается после определения E , возвращает отражение E ;
  • в противном случае (type_of вызывается внутри определения E ), возвращает отражение целочисленного типа (который является типом перечислителя в определении перечисления).
  • Если r представляет отношение прямой базовый класс (то есть элемент std::meta::bases_of(x, ctx)), возвращает отражение базового класса в этом отношении.
  • Если r представляет описание элемента данных (то есть значение, возвращаемое std::meta::data_member_spec), возвращает отражение типа в описании.

Параметры

r - отражение чего-то, что имеет тип

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

Тип того, что представляет r.

Исключения

Выбрасывает std::meta::exception, если только то, что представляет r, не имеет тип. То есть r должно представлять одно из следующего:

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

Пример

См. также

(C++26)
проверяет, представляет ли отражение тип
(функция)