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
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 > >
