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 должен представлять одно из следующего:
- значение
- аннотация
- объект
- переменная
- функция, тип которой не содержит невыведенный тип-заполнитель и которая не является конструктором или деструктором
- элемент перечисления
- нестатический член данных
- безымянное битовое поле
- отношение прямого базового класса
- описание члена данных
- параметр функции
Пример
См. также
|
(C++26) | проверяет, представляет ли отражение тип (функция) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/type_of