名前空間
変種
操作

std::alignment_of

提供: cppreference.com
< cpp‎ | types
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ(C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
型サポート
型の性質
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++20未満)
(C++11)(C++20で非推奨)
(C++11)
型特性定数
メタ関数
(C++17)
定数評価文脈
サポートされている操作
関係と性質の問い合わせ
alignment_of
(C++11)
(C++11)
(C++11)
型変更
型変換
(C++11)
(C++11)
(C++17)
(C++11)(C++20未満)(C++17)
 
ヘッダ <type_traits> で定義
template<class T >
struct alignment_of;
(C++11以上)

alignof式によって取得されたかのような、型 Tアライメント要件に等しいメンバ定数 value を提供します。 T が配列型の場合は、その要素型のアライメント要件を返します。 T が参照型の場合は、その参照先の型のアライメント要件を返します。

alignof(T) が有効な式でなければ、動作は未定義です。

目次

[編集] ヘルパー変数テンプレート

template<class T >
inlineconstexprstd::size_t alignment_of_v = alignment_of<T>::value;
(C++17以上)

std::integral_constant から継承

メンバ定数

value
[静的]
alignof(T)
(パブリック静的メンバ定数)

メンバ関数

operator std::size_t
オブジェクトを std::size_t に変換します。 value を返します
(パブリックメンバ関数)
operator()
(C++14)
value を返します
(パブリックメンバ関数)

メンバ型

定義
value_typestd::size_t
typestd::integral_constant<std::size_t, value>

[編集]実装例

template<class T >struct alignment_of :std::integral_constant<std::size_t, alignof(T)>{};

[編集]ノート

この型特性は alignof キーワードより以前から存在していました。 alignof キーワードは同じ値をより短い記述で取得するために使用できます。

[編集]

#include <iostream>#include <type_traits>   class A {};   int main(){std::cout<< std::alignment_of<A>::value<<'\n';std::cout<< std::alignment_of<int>()<<'\n';// alt syntaxstd::cout<< std::alignment_of_v<double><<'\n';// c++17 alt syntax}

出力:

1 4 8

[編集]関連項目

alignof 演算子(C++11) 型のアライメント要件を問い合わせます[edit]
指定されたサイズの未初期化記憶域として使用するのに適した型を定義します
(クラステンプレート)[edit]
指定された型すべてのための未初期化記憶域として使用するのに適した型を定義します
(クラステンプレート)[edit]
他のいかなるスカラー型より大きいまたは等しいアライメント要件を持つトリビアルな型
(typedef)[edit]
close