<feed xmlns='http://www.w3.org/2005/Atom'>
<title>netbsd/include/stdalign.h, branch trunk</title>
<subtitle>NetBSD fork for lockdoc analysis</subtitle>
<link rel='alternate' type='text/html' href='http://git.infra.scholz.ruhr/netbsd/'/>
<entry>
<title>Import &lt;stdalign.h&gt;</title>
<updated>2016-10-02T17:19:00+00:00</updated>
<author>
<name>kamil</name>
<email>kamil@NetBSD.org</email>
</author>
<published>2016-10-02T17:19:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.infra.scholz.ruhr/netbsd/commit/?id=8f33bccbc3995fa1543a8d72996e584e066def3c'/>
<id>8f33bccbc3995fa1543a8d72996e584e066def3c</id>
<content type='text'>
This header conforms to the C11 standard
Reference: ISO/IEC 9899:201x 7.15 Alignment &lt;stdalign.h&gt;

According to ISO/IEC 9899:201x (draft) 7.15 Alignment &lt;stdalign.h&gt; 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
&lt;cstdalign&gt; 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This header conforms to the C11 standard
Reference: ISO/IEC 9899:201x 7.15 Alignment &lt;stdalign.h&gt;

According to ISO/IEC 9899:201x (draft) 7.15 Alignment &lt;stdalign.h&gt; 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
&lt;cstdalign&gt; 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.</pre>
</div>
</content>
</entry>
</feed>
