名前空間
変種
操作

alignof 演算子 (C++11 以降)

From cppreference.com
< cpp‎ | language
 
 
C++言語
全般
フロー制御
条件実行文
if
繰り返し文 (ループ)
for
範囲for (C++11)
ジャンプ文
関数
関数宣言
ラムダ式
inline指定子
動的例外仕様 (C++17まで*)
noexcept指定子 (C++11)
例外
名前空間
指定子
const/volatile
decltype (C++11)
auto (C++11)
constexpr (C++11)
consteval (C++20)
constinit (C++20)
記憶域期間指定子
初期化
代替表現
リテラル
ブーリアン - 整数 - 浮動小数点数
文字 - 文字列 - nullptr (C++11)
ユーザー定義 (C++11)
ユーティリティ
属性 (C++11)
typedef宣言
型エイリアス宣言 (C++11)
キャスト
メモリ確保
クラス
クラス固有の関数プロパティ
explicit (C++11)
static

特殊メンバ関数
テンプレート
その他
 
 

型のアラインメント要件を問い合わせます。

目次

[編集] 構文

alignof( type-id )

std::size_t 型の値を返します。

[編集] 説明

type-id によって示される型のインスタンスに必要なアラインメント (バイト単位) を返します。type-id は、完全なオブジェクト型、要素型が完全な配列型、またはこれらの型のいずれかへの参照型である必要があります。

型が参照型の場合、この演算子は参照される型のアラインメントを返します。型が配列型の場合、要素型のアラインメント要件が返されます。

[編集] 備考

alignof によって返される値の意味とプロパティについては、アラインメントを参照してください。

[編集] キーワード

alignof

[編集]

#include <iostream>
 
struct Foo
{
    int   i;
    float f;
    char  c;
};
 
// Note: alignas(alignof(long double)) below can be
// simplified to alignas(long double) if desired.
struct alignas(alignof(long double)) Foo2
{
    // put your definition here
}; 
 
struct Empty {};
 
struct alignas(64) Empty64 {};
 
#define SHOW(expr) std::cout << #expr << " = " << (expr) << '\n'
 
int main()
{
    SHOW(alignof(char));
    SHOW(alignof(int*));
    SHOW(alignof(Foo));
    SHOW(alignof(Foo2));
    SHOW(alignof(Empty));
    SHOW(alignof(Empty64));
}

実行結果の例

alignof(char) = 1
alignof(int*) = 8
alignof(Foo) = 4
alignof(Foo2) = 16
alignof(Empty) = 1
alignof(Empty64) = 64

[編集] 欠陥レポート

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
CWG 1305 C++11 type-id は、境界が不明で要素型が完全な配列への参照を表すことができませんでした
境界が不明で要素型が完全な配列への参照
許可

[編集] 参照

  • C++23標準 (ISO/IEC 14882:2024)
  • 7.6.2.6 Alignof [expr.alignof]
  • C++20 standard (ISO/IEC 14882:2020)
  • 7.6.2.5 Alignof [expr.alignof]
  • C++17 standard (ISO/IEC 14882:2017)
  • 8.3.6 Alignof [expr.alignof]
  • C++14 standard (ISO/IEC 14882:2014)
  • 5.3.6 Alignof [expr.alignof]
  • C++11 standard (ISO/IEC 14882:2011)
  • 5.3.6 Alignof [expr.alignof]

[編集] 関連項目

アラインメント要件 オブジェクトが割り当てられるアドレスを制限します。
alignas (C++11) 変数用のストレージを特定の量でアラインすることを指定します。
(指定子)[編集]
型のアライメント要件を取得する
(クラステンプレート) [編集]
C ドキュメント _Alignof, alignof 演算子
English 日本語 中文(简体) 中文(繁體)