A fundamental alignment is represented by an alignment
less than or equal to the greatest alignment supported by the implementation in
all contexts, which is equal to
alignof(std​::​max_­align_­t) ([support.types]).

The alignment required for a type might be different when it is used as the type
of a complete object and when it is used as the type of a subobject.

The runtime pointer alignment function ([ptr.align])
can be used to obtain an aligned pointer within a buffer; the aligned-storage templates
in the library ([meta.trans.other]) can be used to obtain aligned storage.