On Mon, 13 Oct 2025 at 16:23, Tomasz Kaminski <[email protected]> wrote:

> I have noticed that clang defines language feature test macros when the
> feature is supported
> in eariel mode mode, here is example of __cpp_pack_indexing
>  https://godbolt.org/z/bzsdzWboM
>

I don't think they do that consistently for all features though.

In some cases the macro means "can be used without getting a warning".


>
>
> Could we simply do the same for __cpp_explicit_this_parameter, the selling
> point of FTM was
> to avoid having per-version checks.
>
> On Mon, Oct 13, 2025 at 5:09 PM Patrick Palka <[email protected]> wrote:
>
>> Series tested on x86_64-pc-linux-gnu, does this look OK for trunk only?
>>
>> -- >8 --
>>
>> This FTM is like __cpp_explicit_this_parameter but is also defined
>> in earlier C++ modes if deducing this is supported as an extension
>> by the compiler.  Currently only GCC supports this, Clang doesn't.
>>
>> libstdc++-v3/ChangeLog:
>>
>>         * include/bits/c++config (_GLIBCXX_EXPLICIT_THIS_PARAMETER):
>>         New.
>> ---
>>  libstdc++-v3/include/bits/c++config | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/libstdc++-v3/include/bits/c++config
>> b/libstdc++-v3/include/bits/c++config
>> index eec3a4a499dd..e6d8f186d0d4 100644
>> --- a/libstdc++-v3/include/bits/c++config
>> +++ b/libstdc++-v3/include/bits/c++config
>> @@ -927,6 +927,13 @@ namespace __gnu_cxx
>>  # define _GLIBCXX_USE_BUILTIN_TRAIT(BT) 0
>>  #endif
>>
>> +// Whether deducing this is usable either officially, if in C++23 mode,
>> or
>> +// as an extension (Clang doesn't support the latter).
>> +#if __cpp_explicit_this_parameter \
>> +  || (__cplusplus >= 201103L && __GNUC__ >= 14 &&
>> !defined(_GLIBCXX_CLANG))
>> +# define _GLIBCXX_EXPLICIT_THIS_PARAMETER 202110L
>> +#endif
>> +
>>  // Mark code that should be ignored by the compiler, but seen by Doxygen.
>>  #define _GLIBCXX_DOXYGEN_ONLY(X)
>>
>> --
>> 2.51.0.491.g4b71b29477
>>
>>

Reply via email to