Spec-Zone.ru › C++

std::meta::type_of

Определено в заголовочном файле <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 должен представлять одно из следующего:

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

Пример

См. также

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

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

Spec-Zone.ru

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