namespace std {
using max_align_t = implementation-defined;
}
概要
std::max_align_t
は、どのスカラー型よりも大きいアライメントを必要とする型である。
この型は、C++11ではPOD型、C++20ではトリビアル型に分類される。
alignas
指示子により、std::max_align_t
のアライメントより大きいサイズのアライメントを指定できるかどうかは、実装依存である。
例
#include <iostream>
#include <cstddef>
#include <type_traits>
int main()
{
std::cout << "sizeof(max_align_t): " << sizeof(std::max_align_t) << std::endl;
std::cout << "alignof(max_align_t): " << alignof(std::max_align_t) << std::endl;
std::cout << "is_object<max_align_t>: " << std::is_object<std::max_align_t>::value << std::endl;
std::cout << "is_scalar<max_align_t>: " << std::is_scalar<std::max_align_t>::value << std::endl;
std::cout << "is_union<max_align_t>: " << std::is_union<std::max_align_t>::value << std::endl;
std::cout << "is_array<max_align_t>: " << std::is_array<std::max_align_t>::value << std::endl;
std::cout << "is_class<max_align_t>: " << std::is_class<std::max_align_t>::value << std::endl;
std::cout << "is_pod<max_align_t>: " << std::is_pod<std::max_align_t>::value << std::endl;
}
xxxxxxxxxx
#include <iostream>
#include <cstddef>
#include <type_traits>
int main()
{
std::cout << "sizeof(max_align_t): " << sizeof(std::max_align_t) << std::endl;
std::cout << "alignof(max_align_t): " << alignof(std::max_align_t) << std::endl;
std::cout << "is_object<max_align_t>: " << std::is_object<std::max_align_t>::value << std::endl;
std::cout << "is_scalar<max_align_t>: " << std::is_scalar<std::max_align_t>::value << std::endl;
std::cout << "is_union<max_align_t>: " << std::is_union<std::max_align_t>::value << std::endl;
std::cout << "is_array<max_align_t>: " << std::is_array<std::max_align_t>::value << std::endl;
std::cout << "is_class<max_align_t>: " << std::is_class<std::max_align_t>::value << std::endl;
std::cout << "is_pod<max_align_t>: " << std::is_pod<std::max_align_t>::value << std::endl;
}
出力
sizeof(max_align_t): 24
alignof(max_align_t): 8
is_object<max_align_t>: 1
is_scalar<max_align_t>: 0
is_union<max_align_t>: 0
is_array<max_align_t>: 0
is_class<max_align_t>: 1
is_pod<max_align_t>: 1
バージョン
言語
- C++11
処理系
- Clang: 3.5 ✅
- GCC: 4.9 ✅
- ICC: ??
- Visual C++: 2012 ✅, 2013 ✅, 2015 ✅
関連項目
参照
- P0767R1 Deprecate POD
- C++20でPOD用語の非推奨化にともない、この型がPOD型ではなくトリビアル型に分類されるよう規定が変更された