std::meta::alignment_of
Определён в заголовочном файле <meta> | ||
|---|---|---|
consteval std::size_t alignment_of( std::meta::info r ); | (начиная с C++26) |
Возвращает требование к выравниванию типа или (под)объекта, представленного r.
Параметры
| r | - | значение отражения |
Возвращаемое значение
Если r представляет тип «ссылка на T», возвращает alignof(T*).
В противном случае, если r представляет тип U, возвращает alignof(U).
В противном случае, если r представляет переменную или объект, возвращает требование к выравниванию переменной или объекта.
В противном случае, если r представляет отношение прямого базового класса, возвращает требование к выравниванию базового класса (то есть std::meta::alignment_of(std::meta::type_of(r))).
В противном случае, если r представляет нестатический член данных M класса C, возвращает требование к выравниванию соответствующего прямого подобъекта-члена полного объекта типа C.
В противном случае, если r представляет описание члена данных, возвращает значение его выравнивания, если оно не равно ⊥, или std::meta::alignment_of(std::meta::type_of(r)) в противном случае.
Исключения
Выбрасывает std::meta::exception, если не выполняются все следующие условия:
-
std::meta::dealias(r)представляет одно из следующего: - тип
- объект
- переменную не ссылочного типа
- нестатический член данных, не являющийся битовым полем
- отношение прямого базового класса
- описание члена данных, ширина битового поля которого равна ⊥
- Если
std::meta::dealias(r)представляет тип,std::meta::is_complete_type(r)равноtrue.
Примечания
Эта функция обрабатывает «ссылку на T» так же, как «указатель на T». Это соответствует представлению нестатических членов-ссылок.
Пример
См. также
alignof (C++11) | запрашивает требования к выравниванию типа (оператор) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/meta/alignment_of