C++ Logo

SG10

Advanced search

Subject: P1847 Make declaration order layout mandated
From: Balog Pal (pasa_at_[hidden])
Date: 2020-02-16 09:56:21


>Can you email the sg10 list with an example of why a feature test
macro may be necessary?

I have one use case in mind. In my projects I usually have a
configuration/environments checking headers, that looks for compiler,
language version and platform attributes, with #error if anything is not
as expected. Especially for things that were assumed and built on.

The paper imposes a strict and reliable order of members, that is not
unreasonable to assume. And that is easier to check with a related than
a more generic one.

OTOH my argument in the was that no one is actually swapping.

I'm not in live with the macro and happy to remove it, please make a
verdict before the postmailing deadline.

-- 
A few extra thoughts: I tried to figure out how these macros are 
supposed to work for the clients. Just using the standard all I find is 
the macro and a date. No description of the semantics or change its 
presence or number means.   I.e let's take the first thing in the table 
__cpp_aggregate_bases. The WP tells no more.  Google gives 123 hits, 
mostly duds, the first link going to cppreference (so far so good). But 
that drops us on the aggregate initialization page that has a ton of 
text, many "since C++17" entries and no mention of the macro.  looking 
for word "base" may be a hint but hardly the solid information.   I 
personally could locate the related paper through indirections, but 
would expect the information be useful for those not working for WG21.
Considering this and that my further papers will change more related 
rules it might be wise to not add a test macro this time and this change 
implied in a further one (or the general C++23).

SG10 list run by herb.sutter at gmail.com