https://gcc.gnu.org/g:23cd6f3bcb494606afe82a490b10f64f660d8143

commit r16-6917-g23cd6f3bcb494606afe82a490b10f64f660d8143
Author: Jakub Jelinek <[email protected]>
Date:   Tue Jan 20 12:01:07 2026 +0100

    libstdc++: Disable __cpp_lib_reflection for old CXX ABI
    
    Reflection currently doesn't work with -D_GLIBCXX_USE_CXX11_ABI=0.
    The problem is that std::meta::exception currently uses under the
    hood std::string and std::u8string and those aren't constexpr in
    the old ABI.
    While those members are in the standard exposition-only and so
    we could make it to work by writing a custom class template that
    just remembers const char{,8_t} * and size_t, there shouldn't be
    many people trying to use C++26 features with the ABI that isn't
    even compatible with C++11.
    
    2026-01-20  Jakub Jelinek  <[email protected]>
    
            * include/bits/version.def (reflection): Add cxx11abi = yes;.
            * include/bits/version.h: Regenerate.

Diff:
---
 libstdc++-v3/include/bits/version.def |  1 +
 libstdc++-v3/include/bits/version.h   | 20 ++++++++++----------
 2 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/libstdc++-v3/include/bits/version.def 
b/libstdc++-v3/include/bits/version.def
index 175e695a96db..8bb3e8d185f3 100644
--- a/libstdc++-v3/include/bits/version.def
+++ b/libstdc++-v3/include/bits/version.def
@@ -2259,6 +2259,7 @@ ftms = {
     v = 202506;
     cxxmin = 26;
     extra_cond = "__cpp_impl_reflection >= 202506L";
+    cxx11abi = yes;
   };
 };
 
diff --git a/libstdc++-v3/include/bits/version.h 
b/libstdc++-v3/include/bits/version.h
index 020c256ca0ca..107b19002d7a 100644
--- a/libstdc++-v3/include/bits/version.h
+++ b/libstdc++-v3/include/bits/version.h
@@ -2526,6 +2526,16 @@
 #endif /* !defined(__cpp_lib_philox_engine) */
 #undef __glibcxx_want_philox_engine
 
+#if !defined(__cpp_lib_reflection)
+# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && 
(__cpp_impl_reflection >= 202506L)
+#  define __glibcxx_reflection 202506L
+#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)
+#   define __cpp_lib_reflection 202506L
+#  endif
+# endif
+#endif /* !defined(__cpp_lib_reflection) */
+#undef __glibcxx_want_reflection
+
 #if !defined(__cpp_lib_is_implicit_lifetime)
 # if (__cplusplus >= 202100L) && 
(__has_builtin(__builtin_is_implicit_lifetime))
 #  define __glibcxx_is_implicit_lifetime 202302L
@@ -2536,14 +2546,4 @@
 #endif /* !defined(__cpp_lib_is_implicit_lifetime) */
 #undef __glibcxx_want_is_implicit_lifetime
 
-#if !defined(__cpp_lib_reflection)
-# if (__cplusplus >  202302L) && (__cpp_impl_reflection >= 202506L)
-#  define __glibcxx_reflection 202506L
-#  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)
-#   define __cpp_lib_reflection 202506L
-#  endif
-# endif
-#endif /* !defined(__cpp_lib_reflection) */
-#undef __glibcxx_want_reflection
-
 #undef __glibcxx_want_all

Reply via email to