alignof operator (since C++11)
From cppreference.com
Queries alignment requirements of a type
Syntax
alignof( type-id )
|
|||||||||
Returns a value of type std::size_t.
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.
Keywords
Notes
See alignment for the meaning and properties of the value returned by alignof.
Example
Run this code
#include <iostream> struct Foo { int i; float f; char c; }; struct Empty {}; struct alignas(64) Empty64 {}; 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"; }
Possible output:
Alignment of - char : 1 - pointer : 8 - class Foo : 4 - empty class : 1 - alignas(64) Empty: 64
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) |