alignof operator (since C++11)
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
#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)  | 
    © cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
    http://en.cppreference.com/w/cpp/language/alignof