std:: alignment_of
| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
(C++14)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
定義先ヘッダ
<type_traits>
|
||
|
template
<
class
T
>
struct alignment_of ; |
(C++11以降) | |
メンバ定数
value
を提供します。これは、
アライメント要件
が
T
型に対して
alignof
式によって得られる値と等しくなります。
T
が配列型の場合、要素型のアライメント要件を返します。
T
が参照型の場合、参照先の型のアライメント要件を返します。
alignof ( T ) が有効な式でない場合、動作は未定義です。
プログラムが
std::alignment_of
または
std::alignment_of_v
(C++17以降)
に対する特殊化を追加する場合、動作は未定義です。
目次 |
ヘルパー変数テンプレート
|
template
<
class
T
>
constexpr std:: size_t alignment_of_v = alignment_of < T > :: value ; |
(C++17以降) | |
std:: integral_constant から継承
メンバ定数
|
value
[static]
|
alignof
(
T
)
(公開静的メンバ定数) |
メンバ関数
|
operator std::size_t
|
オブジェクトを
std::
size_t
に変換し、
value
を返す
(公開メンバ関数) |
|
operator()
(C++14)
|
value
を返す
(公開メンバ関数) |
メンバ型
| 型 | 定義 |
value_type
|
std:: size_t |
type
|
std:: integral_constant < std:: size_t , value > |
実装例
template<class T> struct alignment_of : std::integral_constant<std::size_t, alignof(T)> {}; |
タグ内のテキスト、C++固有の用語は翻訳せず、元のフォーマットを保持しています。翻訳対象となる自然言語テキストが存在しないため、出力は入力と同一となります)
注記
この型特性は alignof キーワードよりも前から存在しており、より簡潔に同じ値を取得するために使用できます。
例
#include <cstdint> #include <iostream> #include <type_traits> struct A {}; struct B { std::int8_t p; std::int16_t q; }; int main() { std::cout << std::alignment_of<A>::value << ' '; std::cout << std::alignment_of<B>::value << ' '; std::cout << std::alignment_of<int>() << ' '; // 代替構文 std::cout << std::alignment_of_v<double> << '\n'; // C++17 代替構文 }
出力例:
1 2 4 8
関連項目
alignof
(C++11)
|
型のアライメント要件を問い合わせる
(演算子) |
alignas
(C++11)
|
変数のストレージが特定の量でアライメントされることを指定する
(指定子) |
|
(C++11以降)
(C++23で非推奨)
|
指定されたサイズの型の未初期化ストレージとして使用するのに適した型を定義する
(クラステンプレート) |
|
(C++11以降)
(C++23で非推奨)
|
すべての指定された型の未初期化ストレージとして使用するのに適した型を定義する
(クラステンプレート) |
|
(C++11)
|
他の任意のスカラ型と同じくらい大きなアライメント要件を持つトリビアル型
(typedef) |