Module Name:    src
Committed By:   kamil
Date:           Sun Oct  2 17:19:00 UTC 2016

Modified Files:
        src/distrib/sets/lists/comp: mi
        src/include: Makefile
Added Files:
        src/include: stdalign.h

Log Message:
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.


To generate a diff of this commit:
cvs rdiff -u -r1.2061 -r1.2062 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.142 -r1.143 src/include/Makefile
cvs rdiff -u -r0 -r1.1 src/include/stdalign.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Reply via email to