On Tue, 20 Jan 2026 at 00:52, Jakub Jelinek <[email protected]> wrote:
>
> Hi!
>
> 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 mix ABI incompatible even with C++11 together
> with C++26.

Maybe "shouldn't be many people trying to use C++26 features with the
ABI that isn't even compatible with C++11"?

OK for trunk like that, thanks.


>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2026-01-20  Jakub Jelinek  <[email protected]>
>
>         * include/bits/version.def (reflection): Add cxx11abi = yes;.
>         * include/bits/version.h: Regenerate.
>
> --- libstdc++-v3/include/bits/version.def.jj    2026-01-15 16:33:47.022097704 
> +0100
> +++ libstdc++-v3/include/bits/version.def       2026-01-19 17:28:16.214806742 
> +0100
> @@ -2259,6 +2259,7 @@ ftms = {
>      v = 202506;
>      cxxmin = 26;
>      extra_cond = "__cpp_impl_reflection >= 202506L";
> +    cxx11abi = yes;
>    };
>  };
>
> --- libstdc++-v3/include/bits/version.h.jj      2026-01-15 16:33:47.022097704 
> +0100
> +++ libstdc++-v3/include/bits/version.h 2026-01-19 17:28:22.844417523 +0100
> @@ -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
>
>         Jakub
>

Reply via email to