alignof operator (since C++11)
From cppreference.com
Queries alignment requirements of a type
Contents |
[edit] Syntax
alignof( type-id )
|
|||||||||
Returns a value of type std::size_t.
[edit] Explanation
Returns the alignment, in bytes, required for any instance of the type indicated by type-id, which is either complete type, an array type, or a reference type.
If the type is reference type, the operator returns the alignment of referenced type; if the type is array type, alignment requirement of the element type is returned.
[edit] Keywords
[edit] Notes
See alignment for the meaning and properties of the value returned by alignof
.
[edit] Example
Run this code
#include <iostream> struct Foo { int i; float f; char c; }; struct Empty {}; struct alignas(64) Empty64 {}; struct alignas(1) Double { double d; }; int main() { std::cout << "Alignment of" "\n" "- char : " << alignof(char) << "\n" "- pointer : " << alignof(int*) << "\n" "- class Foo : " << alignof(Foo) << "\n" "- empty class : " << alignof(Empty) << "\n" "- alignas(64) Empty: " << alignof(Empty64) << "\n" "- alignas(1) Double: " << alignof(Double) << '\n'; }
Possible output:
Alignment of - char : 1 - pointer : 8 - class Foo : 4 - empty class : 1 - alignas(64) Empty: 64 - alignas(1) Double: 8
[edit] See also
alignment requirement | restricts the addresses at which an object may be allocated |
alignas specifier | specifies that the storage for the variable should be aligned by specific amount (C++11) |
(C++11) |
obtains the type's alignment requirements (class template) |