From 101f96847629850edbdfceb11b363770be4fd69d Mon Sep 17 00:00:00 2001 From: Patrick Palka Date: Fri, 5 Dec 2025 12:14:18 -0500 Subject: [PATCH] libstdc++: Introduce _GLIBCXX_EXPLICIT_THIS_PARAMETER internal FTM MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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. Reviewed-by: Tomasz Kamiński Reviewed-by: Jonathan Wakely --- 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 eec3a4a499d..e6d8f186d0d 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.47.3