[PATCH 1/4] libstdc++: Introduce _GLIBCXX_EXPLICIT_THIS_PARAMETER internal FTM
Patrick Palka
ppalka@redhat.com
Mon Oct 13 15:26:10 GMT 2025
On Mon, 13 Oct 2025, Tomasz Kaminski 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
>
> Could we simply do the same for __cpp_explicit_this_parameter, the selling point of FTM was
> to avoid having per-version checks.
Ah I didn't realize Clang does that, it makes sense to me. Jason, what
do you think?
>
> On Mon, Oct 13, 2025 at 5:09 PM Patrick Palka <ppalka@redhat.com> 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
>
>
>
More information about the Libstdc++
mailing list