std::meta::alignment_of

来自cppreference.com
< cpp | meta
在标头 <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 表示类 C 的非静态数据成员 M,则返回类型为 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) 查询类型的对齐要求
(operator)[编辑]