On Tue, 16 Feb 2016, Martin Sebor wrote: > > Presumably the C++ liaison people considered compatibility as part of the > > WG14 discussions. In any case, I see no sign that (beyond the > > "fundamental type" terminology issue) the wording in C++ is any better > > thought out than the pre-DR#445 C wording. > > The C++ wording matches the pre-DR 445 C wording and says that
The ill-thought-out wording. Exactly. > max_align_t is the most strictly aligned type supported. DR 445 And, in particular, max_align_t (both pre-DR#445 and post-DR#445) cannot be more strictly aligned than malloc guarantees to return (because malloc returns memory "suitably aligned so that it may be assigned to a pointer to any type of object with a fundamental alignment requirement and then used to access such an object or an array of such objects in the space allocated", and the alignment of max_align_t is unambiguously a fundamental alignment both before and after the DR, by virtue of how fundamental alignments are defined). > changes max_align_t to be the most strictly aligned basic type. No. The most strictly aligned of an infinite set of types including those derived in certain ways from basic types and header typedefs. > I disagree. I don't think there's any risk of confusion, and > I also don't think that having max_align_t reflect the alignment > of the most strictly aligned basic type (which is easy to obtain > via _Alignof) without providing a way to determine the greatest Because max_align_t reflects an infinite set of derived types, based on both basic types and header types, it's not possible to determine the maximum alignment requirement of those using _Alignof. -- Joseph S. Myers jos...@codesourcery.com