C++ Logo

sg10

Advanced search

Re: [SG10] Missing feature test macros for C++20 core papers

From: Jonathan Wakely <cxx_at_[hidden]>
Date: Sat, 16 Oct 2021 00:33:04 +0100
On Fri, 15 Oct 2021 at 23:55, Barry Revzin <barry.revzin_at_[hidden]> wrote:

>
>
> On Fri, Oct 15, 2021 at 5:27 PM Jonathan Wakely via SG10 <
> sg10_at_[hidden]> wrote:
>
>> I think the following papers should have had a feature test macro:
>>
>> P0848
>> <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0848r3.html>
>> Conditionally Trivial Special Member Functions
>>
>> P1330
>> <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1330r0.pdf>
>> Changing the active member of a union inside constexpr
>>
>> I need a union in order to implement the std::variant changes in P2231
>> <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2231r1.html>
>> and a conditionally trivial destructor makes it easier. In order to define
>> the __cpp_lib_constexpr_variant macro correctly I need to know if the union
>> usage is actually going to work, but there's no macro for P1330, so I can't
>> tell.
>>
>> A macro for constexpr destructors (P0784R7
>> <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0784r7.html>?)
>> might have been nice too, because if the compiler doesn't support it then
>> you get an error for even trying to declare a destructor constexpr. Without
>> a feature test macro there's no reliable way to try to use the feature.
>>
>> If all the compilers I need to support already implemented those
>> features, I wouldn't care, but they don't.
>>
>> https://godbolt.org/z/qG6d7TxhE
>>
>
> I suppose given that not all compilers support them, it's not too late to
> go back and add the feature test macro? Although the compilers that do
> support it don't provide the macro - what do you think about the false
> negatives there?
>

I'm OK with degraded features because of that. It's better to not use the
feature when I really could have done, than try to use it and get errors.

This is in the context of libstdc++, where I don't know who is going to use
the code or what compiler they'll use, so by the time they get an error,
it's too late for me to address it.

Received on 2021-10-15 18:33:18