cpp/language/alignas

Specifies the of a type or an object.

Syntax
@1@ must be an  that evaluates to zero, or to a valid value for an  or extended alignment. @2@ Equivalent to. @3@ Equivalent to multiple alignas specifiers applied to the same declaration, one for each member of the, which can be either type or non-type parameter pack.

Explanation
The specifier may be applied to:
 * the declaration or definition of a ;
 * the declaration of a non-bitfield class data member;
 * the declaration of a variable, except that it cannot be applied to the following:
 * a function parameter;
 * the exception parameter of a catch clause.

The object or the type declared by such a declaration will have its equal to the strictest (largest) non-zero  of all  specifiers used in the declaration, unless it would weaken the natural alignment of the type.

If the strictest (largest) on a declaration is weaker than the alignment it would have without any  specifiers (that is, weaker than its natural alignment or weaker than  on another declaration of the same object or type), the program is ill-formed:

Invalid non-zero alignments, such as are ill-formed.

Valid non-zero alignments that are weaker than another on the same declaration are ignored.

is always ignored.