Skip to content

Latest commit

 

History

History
64 lines (47 loc) · 2.11 KB

File metadata and controls

64 lines (47 loc) · 2.11 KB

alignment_of

  • meta[meta header]
  • std::meta[meta namespace]
  • function[meta id-type]
  • cpp26[meta cpp]
namespace std::meta {
  consteval size_t alignment_of(info r);
}
  • info[link info.md]

概要

型、オブジェクト、値、変数、メンバ変数、または基底クラス関係のアライメントを取得する。

戻り値

rが以下のいずれかを表す場合、そのアライメントを返す:

  • オブジェクト
  • 参照型でない変数
  • ビットフィールドでないメンバ変数
  • 直接基底クラス関係
  • ビット幅を持たないデータメンバ記述(data_member_spec()で生成されるもの。アライメント指定があればその値、なければ型のアライメント)

例外

以下のすべてを満たさない場合、std::meta::exception例外を送出する:

  • dealias(r)が、型・オブジェクト・参照型でない変数・ビットフィールドでないメンバ変数・直接基底クラス関係・ビット幅を持たないデータメンバ記述のいずれかを表すこと
  • dealias(r)が型を表す場合、is_complete_type(r)trueであること

#include <meta>

int main() {
  static_assert(std::meta::alignment_of(^^int) == alignof(int));
  static_assert(std::meta::alignment_of(^^double) == alignof(double));
}

出力

バージョン

言語

  • C++26

処理系

参照