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