alignof and alignas (C++)


The latest version of this topic can be found at alignof and alignas (C++).

The alignas type specifier is a portable, C++ standard way to specify custom alignment of variables and user defined types. The alignof operator is likewise a standard, portable way to obtain the alignment of a specified type or variable.


You can use alignas on a class, struck or union, or on individual members. When multiple alignas specifiers are encountered, the compiler will choose the strictest one, (the one with the largest value).

struct alignas(16) Bar  
    int i;       // 4 bytes  
    int n;      // 4 bytes  
    alignas(4) char arr[3];  
    short s;          // 2 bytes  
cout << alignof(Bar) << endl; // output: 16  

See Also