branches: 1.1.2; Import <stdalign.h>
This header conforms to the C11 standard Reference: ISO/IEC 9899:201x 7.15 Alignment <stdalign.h>
According to ISO/IEC 9899:201x (draft) 7.15 Alignment <stdalign.h> defines four macros: - alignas which expands to _Alignas - alignof which expands to _Alignof - __alignas_is_defined and __alignof_is_defined which both expand to 1
The _Alignas declaration appears as one of the type specifiers to modify the alignment requirement of the object being declared.
The _Alignof operator is used to query the alignment requirement of its operand type.
ISO/IEC N3242=11-0012 (C++1x) and ISO/IEC N3797 (C++1y) both note a header <cstdalign> which defines only __alignas_is_defined and shall not define the alignas macro. It misses the alignof case as it's probably based on an older C1x draft, which defined only alignas. Assume that this is a bug in the standard and treat alignof the same way as alignas in C++11.
Allow to define alignas and alignof in C++ prior the C++11 standard. It might be broken but a nonstandard C++ compiler might support C11-like _Alignas and _Alignof. Note that it's fatal for g++(1) v.5.4.
|