[{"id":3680457,"web_url":"http://patchwork.ozlabs.org/comment/3680457/","msgid":"<CAKvuMXBM40U=iFNPw3+bY4TixH3VG12QVtC-A-shHOjTMP5n9w@mail.gmail.com>","list_archive_url":null,"date":"2026-04-22T10:34:33","subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","submitter":{"id":90409,"url":"http://patchwork.ozlabs.org/api/people/90409/","name":"Tomasz Kamiński","email":"tkaminsk@redhat.com"},"content":"On Wed, Apr 22, 2026 at 12:32 PM Jakub Jelinek <jakub@redhat.com> wrote:\n\n> Hi!\n>\n> Both __cpp_impl_reflection and __cpp_lib_reflection were increased from\n> 202506L to 202603L post Croydon, I assume to show that P3795R2 (maybe some\n> issues too) have been implemented.\n> Now, we do implement P3795R2 except for the is_applicable_type,\n> is_nothrow_applicable_type and apply_result metafunctions, but Jonathan\n> says\n> there is agreement in LWG that to test for availability of those one should\n> test __cpp_lib_reflection >= 202603L && __cpp_lib_apply >= 202603L.\n>\nI think  testing only __cpp_lib_apply >= 202603L should be sufficient, i.e.\nthe\nvalue should be set only if reflection is supported.\n\n>\n> So, this patch bumps both FTMs.\n>\n> Tested on x86_64-linux, ok for trunk?\n>\n> 2026-04-22  Jakub Jelinek  <jakub@redhat.com>\n>\n> gcc/c-family/\n>         * c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection\n> value\n>         from 202506L to 202603L.\n> gcc/testsuite/\n>         * g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from\n>         202506L to 202603L.\n>         * g++.dg/reflect/feat1.C: Likewise.  Also adjust for\n>         __cpp_lib_reflection bump from 202506L to 202603L.\n>         * g++.dg/reflect/feat2.C: Likewise.\n>         * g++.dg/reflect/feat3.C: Likewise.\n> libstdc++-v3/\n>         * include/bits/version.def (reflection): Bump 202506L to 202603L\n>         for both v and in extra_cond.\n>         * include/bits/version.h: Regenerate.\n>         * include/std/meta: Compare __glibcxx_reflection against\n>         202603L rather than 202506L.\n>         * include/std/type_traits: Compare __cpp_impl_reflection against\n>         202603L rather than 202506L.\n>         * src/c++23/std.cc.in: Likewise.  Compare __glibcxx_reflection\n> against\n>         202603L rather than 202506L.\n>         * testsuite/20_util/is_structural/value.cc: Compare\n>         __cpp_impl_reflection against 202603L rather than 202506L.\n>         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.\n>\n> --- gcc/c-family/c-cppbuiltin.cc.jj     2026-03-27 10:17:13.713337609 +0100\n> +++ gcc/c-family/c-cppbuiltin.cc        2026-04-22 11:59:44.926135527 +0200\n> @@ -1119,7 +1119,7 @@ c_cpp_builtins (cpp_reader *pfile)\n>           cpp_define (pfile,\n> \"__cpp_constexpr_virtual_inheritance=202506L\");\n>           cpp_define (pfile, \"__cpp_expansion_statements=202506L\");\n>           if (flag_reflection)\n> -           cpp_define (pfile, \"__cpp_impl_reflection=202506L\");\n> +           cpp_define (pfile, \"__cpp_impl_reflection=202603L\");\n>           else\n>             cpp_warn (pfile, \"__cpp_impl_reflection\");\n>         }\n> --- gcc/testsuite/g++.dg/DRs/dr2581-2.C.jj      2026-03-27\n> 10:17:15.320311386 +0100\n> +++ gcc/testsuite/g++.dg/DRs/dr2581-2.C 2026-04-22 12:02:27.265362686 +0200\n> @@ -64,7 +64,7 @@\n>  #define __cpp_impl_coroutine 201902L           // { dg-error\n> \"'__cpp_impl_coroutine' redefined\" \"\" { target c++20 } }\n>  #define __cpp_impl_destroying_delete 201806L   // { dg-error\n> \"'__cpp_impl_destroying_delete' redefined\" \"\" { target c++20 } }\n>  #define __cpp_impl_three_way_comparison 201907L        // { dg-error\n> \"'__cpp_impl_three_way_comparison' redefined\" \"\" { target c++20 } }\n> -#define __cpp_impl_reflection 202506L          // { dg-error\n> \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n> +#define __cpp_impl_reflection 202603L          // { dg-error\n> \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n>  #define __cpp_implicit_move 202207L            // { dg-error\n> \"'__cpp_implicit_move' redefined\" \"\" { target c++23 } }\n>  #define __cpp_inheriting_constructors 201511L  // { dg-error\n> \"'__cpp_inheriting_constructors' redefined\" \"\" { target c++20 } }\n>  #define __cpp_init_captures 201803L            // { dg-error\n> \"'__cpp_init_captures' redefined\" \"\" { target c++14 } }\n> --- gcc/testsuite/g++.dg/reflect/feat1.C.jj     2026-03-27\n> 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat1.C        2026-04-22\n> 12:00:26.919418259 +0200\n> @@ -4,14 +4,14 @@\n>\n>  #ifndef __cpp_impl_reflection\n>  #  error \"__cpp_impl_reflection\"\n> -#elif __cpp_impl_reflection != 202506\n> -#  error \"__cpp_impl_reflection != 202506\"\n> +#elif __cpp_impl_reflection != 202603\n> +#  error \"__cpp_impl_reflection != 202603\"\n>  #endif\n>\n>  #include <meta>\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n> --- gcc/testsuite/g++.dg/reflect/feat2.C.jj     2026-03-27\n> 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat2.C        2026-04-22\n> 12:00:42.738148067 +0200\n> @@ -6,8 +6,8 @@\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n>\n>  #ifndef __cpp_lib_define_static\n> --- gcc/testsuite/g++.dg/reflect/feat3.C.jj     2026-03-27\n> 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat3.C        2026-04-22\n> 12:01:46.374061130 +0200\n> @@ -6,8 +6,8 @@\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n>\n>  #ifndef __cpp_lib_define_static\n> --- libstdc++-v3/include/bits/version.def.jj    2026-04-14\n> 21:13:35.039460718 +0200\n> +++ libstdc++-v3/include/bits/version.def       2026-04-22\n> 12:03:42.709074062 +0200\n> @@ -2337,9 +2337,9 @@ ftms = {\n>  ftms = {\n>    name = reflection;\n>    values = {\n> -    v = 202506;\n> +    v = 202603;\n>      cxxmin = 26;\n> -    extra_cond = \"__cpp_impl_reflection >= 202506L\";\n> +    extra_cond = \"__cpp_impl_reflection >= 202603L\";\n>      cxx11abi = yes;\n>    };\n>  };\n> --- libstdc++-v3/include/bits/version.h.jj      2026-04-14\n> 21:13:35.039460718 +0200\n> +++ libstdc++-v3/include/bits/version.h 2026-04-22 12:03:49.126595150 +0200\n> @@ -2602,10 +2602,10 @@\n>  #undef __glibcxx_want_philox_engine\n>\n>  #if !defined(__cpp_lib_reflection)\n> -# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI &&\n> (__cpp_impl_reflection >= 202506L)\n> -#  define __glibcxx_reflection 202506L\n> +# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI &&\n> (__cpp_impl_reflection >= 202603L)\n> +#  define __glibcxx_reflection 202603L\n>  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)\n> -#   define __cpp_lib_reflection 202506L\n> +#   define __cpp_lib_reflection 202603L\n>  #  endif\n>  # endif\n>  #endif /* !defined(__cpp_lib_reflection) */\n> --- libstdc++-v3/include/std/meta.jj    2026-04-21 18:24:44.122033404 +0200\n> +++ libstdc++-v3/include/std/meta       2026-04-22 12:04:19.089452664 +0200\n> @@ -37,7 +37,7 @@\n>  #define __glibcxx_want_define_static\n>  #include <bits/version.h>\n>\n> -#if __glibcxx_reflection >= 202506L // C++ >= 26 && __cpp_impl_reflection\n> +#if __glibcxx_reflection >= 202603L // C++ >= 26 && __cpp_impl_reflection\n>\n>  #include <array>\n>  #include <initializer_list>\n> --- libstdc++-v3/include/std/type_traits.jj     2026-04-08\n> 15:33:26.695042703 +0200\n> +++ libstdc++-v3/include/std/type_traits        2026-04-22\n> 12:04:59.783757579 +0200\n> @@ -755,7 +755,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>      : public false_type { };\n>  #endif\n>\n> -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n>    /// is_reflection\n>    template<typename _Tp>\n>      struct is_reflection\n> @@ -844,7 +844,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>      struct is_fundamental\n>      : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,\n>                    is_null_pointer<_Tp>\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>                    , is_reflection<_Tp>\n>  #endif\n>                    >::type\n> @@ -3561,7 +3561,7 @@ template <typename _Tp>\n>      is_member_function_pointer<_Tp>::value;\n>  #endif\n>\n> -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n>  template <typename _Tp>\n>    inline constexpr bool is_reflection_v = false;\n>  template <>\n> --- libstdc++-v3/src/c++23/std.cc.in.jj 2026-04-10 08:45:20.742811345 +0200\n> +++ libstdc++-v3/src/c++23/std.cc.in    2026-04-22 12:05:31.902208977\n> +0200\n> @@ -2083,7 +2083,7 @@ export namespace std::pmr\n>  }\n>\n>  // <meta>\n> -#if __glibcxx_reflection >= 202506L\n> +#if __glibcxx_reflection >= 202603L\n>  export namespace std\n>  {\n>  #if __has_builtin(__builtin_is_string_literal)\n> @@ -3572,7 +3572,7 @@ export namespace std\n>    using std::is_implicit_lifetime;\n>    using std::is_implicit_lifetime_v;\n>  #endif\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>    using std::is_reflection;\n>    using std::is_reflection_v;\n>  #endif\n> --- libstdc++-v3/testsuite/20_util/is_structural/value.cc.jj    2026-04-03\n> 20:51:17.921877231 +0200\n> +++ libstdc++-v3/testsuite/20_util/is_structural/value.cc       2026-04-22\n> 12:06:06.519617691 +0200\n> @@ -24,7 +24,7 @@ void test01()\n>    static_assert(test_category<is_structural, int (ClassType::*)>(true),\n> \"\");\n>    static_assert(test_category<is_structural, int (ClassType::*)\n> (int)>(true), \"\");\n>    static_assert(test_category<is_structural, std::nullptr_t>(true), \"\");\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>    static_assert(test_category<is_structural, decltype(^^::)>(true), \"\");\n>  #endif\n>    static_assert(test_category<is_structural, int&>(true), \"\");\n> --- libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc.jj\n> 2026-04-08 07:49:13.479066346 +0200\n> +++ libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc\n>  2026-04-22 12:06:28.514242009 +0200\n> @@ -331,7 +331,7 @@ static_assert(is_convertible_v<int&, con\n>  static_assert(!is_convertible_v<const int&, int&>\n>               && !is_convertible<const int&, int&>::value, \"\");\n>\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>  static_assert(is_reflection_v<decltype(^^int)>\n>               && is_reflection<decltype(^^int)>::value, \"\");\n>  static_assert(!is_reflection_v<int> && !is_reflection<int>::value, \"\");\n>\n>         Jakub\n>\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=X7F2jA5x;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=X7F2jA5x","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0wqZ5LCbz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 20:45:46 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 74C3F4015E9E\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:45:44 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id B297B43E5F9C\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:34:47 +0000 (GMT)","from mail-yw1-f197.google.com (mail-yw1-f197.google.com\n [209.85.128.197]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-614-ezcUaYyzN1S7fWNsRB436w-1; Wed, 22 Apr 2026 06:34:45 -0400","by mail-yw1-f197.google.com with SMTP id\n 00721157ae682-79aa3a19ea3so89998477b3.0\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 03:34:45 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 74C3F4015E9E","OpenDKIM Filter v2.11.0 sourceware.org B297B43E5F9C"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org B297B43E5F9C","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org B297B43E5F9C","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776854087; cv=none;\n b=KSThVUMJhsf1vyzlxQp5rQj5BtFRFhq8kS738T3ZTL5dSx8Y4yfZCR2t0uUVr02J47BiuIlMiO3XChU1o9d4QZJ2K1MTMBq/+NqEYAWIFwVEYy9ND2uC5Gm2ay62SJJ0VlIMvyYIwx6f8rZVYOygfHM3z3esmrAdSt/sGsouRb8=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776854087; c=relaxed/simple;\n bh=4WkrXWD6QzcR+DBMMwQoBbkKpQ2hbttYAvRKVp+asUo=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=qa7A7vpiC61GvNbZUcnF/kScKJJebAl8HEtj5Jq6CBY188G8bRbjxNhR1wfg8puO7KDf3huVHmriZX7ZSyJym0BPtGfQElZcda3nbUjTCuPCEHjQOClDrH4TQlIRom283RZhboTeiGYckpQIBqm2P6eWBN/HIUfI391OWiwncFY=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776854087;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=dfmoAPj5haTBqhOqqrOIHwYPLKARwdx8DVNL1VFPu2o=;\n b=X7F2jA5xNoi81iRuHFSaZb26kdXbUS/vgPbOk6gdxodt2mOIsNxnyUSTdyAzXWn1miKfaF\n 1fdyeM0fYCXEh9f+MH37IOOm+Ad5UuLlaobGlVh7nFcq+NSXvG6o5x9mksZox516SEQnL8\n yi+pv5bqVxwZ4sryqwR/moNWi6xqy4U=","X-MC-Unique":"ezcUaYyzN1S7fWNsRB436w-1","X-Mimecast-MFC-AGG-ID":"ezcUaYyzN1S7fWNsRB436w_1776854085","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776854085; x=1777458885;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=dfmoAPj5haTBqhOqqrOIHwYPLKARwdx8DVNL1VFPu2o=;\n b=QEkPYWkIGGBl2sC/07CRBFLw/Le9fP+5tMpsA02RCRzexgCRxJYpoGO5U7FPD+ejDJ\n e6deUsWlVHCi4H9CpnU2U7CR59oPeoEkJy8qCu0d0NkdWQtJy+mFi/k2JFQrvi8Hkf40\n sIMFOwALJL2ScyAUVPSNOQf33GT16Z+Qsk5tX65eIhQjxJSirvqPglPqGYDQdIs60/aL\n aHF4+uTWvqAVwb5H4gITLYeIUIuzeEHa6YqBy2YMTynb4OxWi/WK+tlqYehMG7FxD2AJ\n ZX42eRJ78pM9pZbAMexCXTmxzhHMqpnhQEfSXSDemiM6d7cpCR9gm8qWyvdsANHe29Hv\n jT8Q==","X-Forwarded-Encrypted":"i=1;\n AFNElJ958SL6wcnUZbXriZhi6jcZWlSeK/Rzi+/wIWbvS+HhY4uIVYsgxf/mUSujx2l+2NvDMwN7GmuoWBiD2w==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YyjRIa+MW7g+rg4dVfgIUw1ZZgYaX1n96VfoJCjVhSHcQciTT91\n EHL3Zm8cVSdMUQ9RKLQNhTxa7kccRCucXeeCUD2ua36r3vNaaGy/ZMebeBaJgfwcOSPelNp7gB4\n MHFi1wEDhj9P0GmnuQ2MZGCIT+5P+GIIjPSnyAJ5O8nBmKwN9rGUoYwCiYDsDBP2V19aiRvyfUi\n AIi7u4296wEZrQvtKzUL5et8DOHRkez2CQfg==","X-Gm-Gg":"AeBDiesIE8mzNYvRXsdbemNkSwoom2XRL8VznoX0lclZfcdkWs++mnSyQmE7WtxylYr\n G/K67J/01eRowgSwAwIXmXxHgHmrw6R5qyFJCl7Y0g9Set5gaCNwr4j+iIYsL4Hup6s9G5bzz6i\n sLYhJO8SeXyN4n8OIicMmCJ8Ta6UWqU+t5Sy9MJaC8otR+dNZtgpn03eIIPqEIjR/ZlMsO7lrUe\n vvAGpDqvLoBZP9Md3A/S4KMKiCNqHZfL61RRQLlDfq24e7g3cUPXKycWibp4OyyF3ykszjSnvdh\n hQ==","X-Received":["by 2002:a05:690c:6e86:b0:7a2:f14d:5a1 with SMTP id\n 00721157ae682-7b9ed06a19emr221000357b3.49.1776854084809;\n Wed, 22 Apr 2026 03:34:44 -0700 (PDT)","by 2002:a05:690c:6e86:b0:7a2:f14d:5a1 with SMTP id\n 00721157ae682-7b9ed06a19emr221000117b3.49.1776854084282; Wed, 22 Apr 2026\n 03:34:44 -0700 (PDT)"],"MIME-Version":"1.0","References":"<aeihoaiuRwi1vH70@tucnak>","In-Reply-To":"<aeihoaiuRwi1vH70@tucnak>","From":"Tomasz Kaminski <tkaminsk@redhat.com>","Date":"Wed, 22 Apr 2026 12:34:33 +0200","X-Gm-Features":"AQROBzCjRmDPf4ygC8qd8mr6HbF9oDS5qSLqou6Z3ESnRLV3BUhkvoEgHMPqSo0","Message-ID":"\n <CAKvuMXBM40U=iFNPw3+bY4TixH3VG12QVtC-A-shHOjTMP5n9w@mail.gmail.com>","Subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","To":"Jakub Jelinek <jakub@redhat.com>","Cc":"Jason Merrill <jason@redhat.com>, Jonathan Wakely <jwakely@redhat.com>,\n gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"JmNosyde1Z1_foe8dhuiPkDfeJDA4bnXHFwOqRgKQ_c_1776854085","X-Mimecast-Originator":"redhat.com","Content-Type":"multipart/alternative; boundary=\"000000000000835e6606500a1477\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3680501,"web_url":"http://patchwork.ozlabs.org/comment/3680501/","msgid":"<CACb0b4nzDuOuFnb+-WE0jWH8PQk8V3d5EbPiX3OdJ4MF9gB8mg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-22T10:34:59","subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Wed, 22 Apr 2026 at 11:23, Jakub Jelinek <jakub@redhat.com> wrote:\n>\n> Hi!\n>\n> Both __cpp_impl_reflection and __cpp_lib_reflection were increased from\n> 202506L to 202603L post Croydon, I assume to show that P3795R2 (maybe some\n> issues too) have been implemented.\n> Now, we do implement P3795R2 except for the is_applicable_type,\n> is_nothrow_applicable_type and apply_result metafunctions, but Jonathan says\n> there is agreement in LWG that to test for availability of those one should\n> test __cpp_lib_reflection >= 202603L && __cpp_lib_apply >= 202603L.\n>\n> So, this patch bumps both FTMs.\n>\n> Tested on x86_64-linux, ok for trunk?\n>\n> 2026-04-22  Jakub Jelinek  <jakub@redhat.com>\n>\n> gcc/c-family/\n>         * c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value\n>         from 202506L to 202603L.\n> gcc/testsuite/\n>         * g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from\n>         202506L to 202603L.\n>         * g++.dg/reflect/feat1.C: Likewise.  Also adjust for\n>         __cpp_lib_reflection bump from 202506L to 202603L.\n>         * g++.dg/reflect/feat2.C: Likewise.\n>         * g++.dg/reflect/feat3.C: Likewise.\n> libstdc++-v3/\n>         * include/bits/version.def (reflection): Bump 202506L to 202603L\n>         for both v and in extra_cond.\n>         * include/bits/version.h: Regenerate.\n>         * include/std/meta: Compare __glibcxx_reflection against\n>         202603L rather than 202506L.\n>         * include/std/type_traits: Compare __cpp_impl_reflection against\n>         202603L rather than 202506L.\n>         * src/c++23/std.cc.in: Likewise.  Compare __glibcxx_reflection against\n>         202603L rather than 202506L.\n>         * testsuite/20_util/is_structural/value.cc: Compare\n>         __cpp_impl_reflection against 202603L rather than 202506L.\n>         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.\n>\n> --- gcc/c-family/c-cppbuiltin.cc.jj     2026-03-27 10:17:13.713337609 +0100\n> +++ gcc/c-family/c-cppbuiltin.cc        2026-04-22 11:59:44.926135527 +0200\n> @@ -1119,7 +1119,7 @@ c_cpp_builtins (cpp_reader *pfile)\n>           cpp_define (pfile, \"__cpp_constexpr_virtual_inheritance=202506L\");\n>           cpp_define (pfile, \"__cpp_expansion_statements=202506L\");\n>           if (flag_reflection)\n> -           cpp_define (pfile, \"__cpp_impl_reflection=202506L\");\n> +           cpp_define (pfile, \"__cpp_impl_reflection=202603L\");\n>           else\n>             cpp_warn (pfile, \"__cpp_impl_reflection\");\n>         }\n> --- gcc/testsuite/g++.dg/DRs/dr2581-2.C.jj      2026-03-27 10:17:15.320311386 +0100\n> +++ gcc/testsuite/g++.dg/DRs/dr2581-2.C 2026-04-22 12:02:27.265362686 +0200\n> @@ -64,7 +64,7 @@\n>  #define __cpp_impl_coroutine 201902L           // { dg-error \"'__cpp_impl_coroutine' redefined\" \"\" { target c++20 } }\n>  #define __cpp_impl_destroying_delete 201806L   // { dg-error \"'__cpp_impl_destroying_delete' redefined\" \"\" { target c++20 } }\n>  #define __cpp_impl_three_way_comparison 201907L        // { dg-error \"'__cpp_impl_three_way_comparison' redefined\" \"\" { target c++20 } }\n> -#define __cpp_impl_reflection 202506L          // { dg-error \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n> +#define __cpp_impl_reflection 202603L          // { dg-error \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n>  #define __cpp_implicit_move 202207L            // { dg-error \"'__cpp_implicit_move' redefined\" \"\" { target c++23 } }\n>  #define __cpp_inheriting_constructors 201511L  // { dg-error \"'__cpp_inheriting_constructors' redefined\" \"\" { target c++20 } }\n>  #define __cpp_init_captures 201803L            // { dg-error \"'__cpp_init_captures' redefined\" \"\" { target c++14 } }\n> --- gcc/testsuite/g++.dg/reflect/feat1.C.jj     2026-03-27 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat1.C        2026-04-22 12:00:26.919418259 +0200\n> @@ -4,14 +4,14 @@\n>\n>  #ifndef __cpp_impl_reflection\n>  #  error \"__cpp_impl_reflection\"\n> -#elif __cpp_impl_reflection != 202506\n> -#  error \"__cpp_impl_reflection != 202506\"\n> +#elif __cpp_impl_reflection != 202603\n> +#  error \"__cpp_impl_reflection != 202603\"\n>  #endif\n>\n>  #include <meta>\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n> --- gcc/testsuite/g++.dg/reflect/feat2.C.jj     2026-03-27 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat2.C        2026-04-22 12:00:42.738148067 +0200\n> @@ -6,8 +6,8 @@\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n>\n>  #ifndef __cpp_lib_define_static\n> --- gcc/testsuite/g++.dg/reflect/feat3.C.jj     2026-03-27 10:17:16.125298250 +0100\n> +++ gcc/testsuite/g++.dg/reflect/feat3.C        2026-04-22 12:01:46.374061130 +0200\n> @@ -6,8 +6,8 @@\n>\n>  #ifndef __cpp_lib_reflection\n>  #  error \"__cpp_lib_reflection\"\n> -#elif __cpp_lib_reflection != 202506\n> -#  error \"__cpp_lib_reflection != 202506\"\n> +#elif __cpp_lib_reflection != 202603\n> +#  error \"__cpp_lib_reflection != 202603\"\n>  #endif\n>\n>  #ifndef __cpp_lib_define_static\n> --- libstdc++-v3/include/bits/version.def.jj    2026-04-14 21:13:35.039460718 +0200\n> +++ libstdc++-v3/include/bits/version.def       2026-04-22 12:03:42.709074062 +0200\n> @@ -2337,9 +2337,9 @@ ftms = {\n>  ftms = {\n>    name = reflection;\n>    values = {\n> -    v = 202506;\n> +    v = 202603;\n>      cxxmin = 26;\n> -    extra_cond = \"__cpp_impl_reflection >= 202506L\";\n> +    extra_cond = \"__cpp_impl_reflection >= 202603L\";\n>      cxx11abi = yes;\n>    };\n>  };\n> --- libstdc++-v3/include/bits/version.h.jj      2026-04-14 21:13:35.039460718 +0200\n> +++ libstdc++-v3/include/bits/version.h 2026-04-22 12:03:49.126595150 +0200\n> @@ -2602,10 +2602,10 @@\n>  #undef __glibcxx_want_philox_engine\n>\n>  #if !defined(__cpp_lib_reflection)\n> -# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202506L)\n> -#  define __glibcxx_reflection 202506L\n> +# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202603L)\n> +#  define __glibcxx_reflection 202603L\n>  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)\n> -#   define __cpp_lib_reflection 202506L\n> +#   define __cpp_lib_reflection 202603L\n>  #  endif\n>  # endif\n>  #endif /* !defined(__cpp_lib_reflection) */\n> --- libstdc++-v3/include/std/meta.jj    2026-04-21 18:24:44.122033404 +0200\n> +++ libstdc++-v3/include/std/meta       2026-04-22 12:04:19.089452664 +0200\n> @@ -37,7 +37,7 @@\n>  #define __glibcxx_want_define_static\n>  #include <bits/version.h>\n>\n> -#if __glibcxx_reflection >= 202506L // C++ >= 26 && __cpp_impl_reflection\n> +#if __glibcxx_reflection >= 202603L // C++ >= 26 && __cpp_impl_reflection\n\nI don't think we need to change any of the #if checks below here,\nbecause nothing in those #if groups was changed by P3795. The checks\nin e.g. <type_traits> and the tests are saying \"is the value of the\nmacro high enough that we should provide these features?\" and that's\ntrue for the old value.\n\n\n>\n>  #include <array>\n>  #include <initializer_list>\n> --- libstdc++-v3/include/std/type_traits.jj     2026-04-08 15:33:26.695042703 +0200\n> +++ libstdc++-v3/include/std/type_traits        2026-04-22 12:04:59.783757579 +0200\n> @@ -755,7 +755,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>      : public false_type { };\n>  #endif\n>\n> -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n>    /// is_reflection\n>    template<typename _Tp>\n>      struct is_reflection\n> @@ -844,7 +844,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>      struct is_fundamental\n>      : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,\n>                    is_null_pointer<_Tp>\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>                    , is_reflection<_Tp>\n>  #endif\n>                    >::type\n> @@ -3561,7 +3561,7 @@ template <typename _Tp>\n>      is_member_function_pointer<_Tp>::value;\n>  #endif\n>\n> -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n>  template <typename _Tp>\n>    inline constexpr bool is_reflection_v = false;\n>  template <>\n> --- libstdc++-v3/src/c++23/std.cc.in.jj 2026-04-10 08:45:20.742811345 +0200\n> +++ libstdc++-v3/src/c++23/std.cc.in    2026-04-22 12:05:31.902208977 +0200\n> @@ -2083,7 +2083,7 @@ export namespace std::pmr\n>  }\n>\n>  // <meta>\n> -#if __glibcxx_reflection >= 202506L\n> +#if __glibcxx_reflection >= 202603L\n>  export namespace std\n>  {\n>  #if __has_builtin(__builtin_is_string_literal)\n> @@ -3572,7 +3572,7 @@ export namespace std\n>    using std::is_implicit_lifetime;\n>    using std::is_implicit_lifetime_v;\n>  #endif\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>    using std::is_reflection;\n>    using std::is_reflection_v;\n>  #endif\n> --- libstdc++-v3/testsuite/20_util/is_structural/value.cc.jj    2026-04-03 20:51:17.921877231 +0200\n> +++ libstdc++-v3/testsuite/20_util/is_structural/value.cc       2026-04-22 12:06:06.519617691 +0200\n> @@ -24,7 +24,7 @@ void test01()\n>    static_assert(test_category<is_structural, int (ClassType::*)>(true), \"\");\n>    static_assert(test_category<is_structural, int (ClassType::*) (int)>(true), \"\");\n>    static_assert(test_category<is_structural, std::nullptr_t>(true), \"\");\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>    static_assert(test_category<is_structural, decltype(^^::)>(true), \"\");\n>  #endif\n>    static_assert(test_category<is_structural, int&>(true), \"\");\n> --- libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc.jj  2026-04-08 07:49:13.479066346 +0200\n> +++ libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc     2026-04-22 12:06:28.514242009 +0200\n> @@ -331,7 +331,7 @@ static_assert(is_convertible_v<int&, con\n>  static_assert(!is_convertible_v<const int&, int&>\n>               && !is_convertible<const int&, int&>::value, \"\");\n>\n> -#if __cpp_impl_reflection >= 202506L\n> +#if __cpp_impl_reflection >= 202603L\n>  static_assert(is_reflection_v<decltype(^^int)>\n>               && is_reflection<decltype(^^int)>::value, \"\");\n>  static_assert(!is_reflection_v<int> && !is_reflection<int>::value, \"\");\n>\n>         Jakub\n>","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=HRm7qwJ7;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=HRm7qwJ7","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0xCv549Xz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 21:03:23 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id B56F742D1F68\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 11:03:21 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id DA9FD4366812\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:35:18 +0000 (GMT)","from mail-yx1-f71.google.com (mail-yx1-f71.google.com\n [74.125.224.71]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-518-Po627B_nNlqPQ8-ytzFk_A-1; Wed, 22 Apr 2026 06:35:17 -0400","by mail-yx1-f71.google.com with SMTP id\n 956f58d0204a3-65441e6e331so2675898d50.3\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 03:35:17 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org B56F742D1F68","OpenDKIM Filter v2.11.0 sourceware.org DA9FD4366812"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org DA9FD4366812","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org DA9FD4366812","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776854119; cv=none;\n b=dwdmh0sGhUHhODQfZmZRv/B3yjfUzt0NiGIEUoUoDEltTqfay5uQgvify20Lp+9Wxv5bHSs/HKfE6tqdpdEHcE8bS05BWFKMN5JGiaIQ7h2ECjZ5CP3HfruUn+wPvR5Yd1ML7KxdZIfC72UBIG3ul96BhUvLJUKTuG0JMoX8YkE=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776854119; c=relaxed/simple;\n bh=heRaON6QRpsCpAkeiME/Iz3TERuqQyrG2HzRIzyWC4M=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=njMz267Y3uR/WUM0eiB3uF0ucxVXbehT0jZnSauvcL8knRXMY48L1o/KpdMU5+09Ud9OY9MdAiwEGgrGuOSP5Y8ZoVglI0pKvv29TtXlIoTTMzRh2tP004evd9HC13zJS0J0smm4r2NYxVyJAMKS3MnTxFtfOPEfZICWGE23oYI=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776854118;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=8VQdvqqNJp1U/oHuhqjULlnah9mnRcd+p12CmK7SzVw=;\n b=HRm7qwJ73VhdUsx0/pCQv5zrgPvj6m5WEx3YK43JAu4ku3h/7J11vqPnJu9BIS8FZKlqLz\n ECVFukgZL2tU6E/lFVp+1K8HxU6I8+jQ3wmJfkCrnHcvR+fO+9fz0y9GzAGSyAxokAjIaH\n lHWEjIx3WTJS3ePBmaAmjlJlttr/TMQ=","X-MC-Unique":"Po627B_nNlqPQ8-ytzFk_A-1","X-Mimecast-MFC-AGG-ID":"Po627B_nNlqPQ8-ytzFk_A_1776854116","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776854116; x=1777458916;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=8VQdvqqNJp1U/oHuhqjULlnah9mnRcd+p12CmK7SzVw=;\n b=rP4ervj7VDfDrtpgmXVJSa8/u25wzvX7iFkSlQp6acYYGgSBBNF/DoICZBPYZAkN/Q\n Ui4j4gXukMrXmt6CMtSkqkIA2N9pCYMjRQcvWV+TZWprn1t05KHNmybjx1kwo5Y71M5w\n pKbSbCz2556aMqNYTjIx234PFtHJfuMTM51G4YZR2lsEveI/Jcd1Jg69gbCmGH3U7fsP\n Tnj/2PIevj4zH7C1cq0JHkNw06TkFD+tbkJnI5D03T1w3V02krrs+1PVH3BnS1J6WV7/\n MWg/cRnW7ywZpwhT8yBNxNx/xdQUKjVtsGQQNBlfZh+Qag3VqTvmoeoo1DrlFIMEuZJl\n Xq6Q==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+0F53nPXzOV4Ix/YMw2vzYmDhH+oNU5ORxpG+6MUMPP70M2FU4dn9qItyIsh/eaUcTqGtvuaEDbTpi7g==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YzVK7br7D9tEF0Ias6DFfu5w7UZJDZlbbaj2HbKfYtyVmNVag9l\n AxErMxuxuMm47qSZQr30f0R8fOGCXVkScXGWY+DNbNhJGmjQ+sd81EelEkEB8IdkvqurfLhcmSO\n cqFnRQrXgx2e9zR7BOv7ef/kpajm6W/8kBr73ErXrYdgTODlwEclMOqhefWWnBTx7e0n9/IvR6j\n qPs/hYTz27+fFRp/+K0OSa68acOeom92DK1Q==","X-Gm-Gg":"AeBDievGxNvREki1w9H1Z06SuTQv2lxR2ijkLl8/iMaEakczRQyDeftbcOZV0Ac/A8Z\n yozibsaOpaJNfGKUdNVCIg77KiOfyTWeH26FOAlwmwsEXhyiYyRZRYt4zD7kyPfjz9O2qoVJ07U\n LN+38AtBmnLVreeDj156JWyxzqAawonw9zSENVYZMiZ9FPnMMCxLm94/eTjlmPrtDqT7Z8+Z/HE\n AQ4LiTzFOdYveEo04N3Jj5WVVKjzQTP6GzS40vXbqvc+pWISsQY5TCMSTz+7sof3Q269cQewZr2\n YA==","X-Received":["by 2002:a05:690e:428e:20b0:652:cac8:1b55 with SMTP id\n 956f58d0204a3-65310b02ec4mr16125650d50.55.1776854116410;\n Wed, 22 Apr 2026 03:35:16 -0700 (PDT)","by 2002:a05:690e:428e:20b0:652:cac8:1b55 with SMTP id\n 956f58d0204a3-65310b02ec4mr16125626d50.55.1776854115980; Wed, 22 Apr 2026\n 03:35:15 -0700 (PDT)"],"MIME-Version":"1.0","References":"<aeihoaiuRwi1vH70@tucnak>","In-Reply-To":"<aeihoaiuRwi1vH70@tucnak>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Wed, 22 Apr 2026 11:34:59 +0100","X-Gm-Features":"AQROBzCBEepc3Qs2Sl3_sLTKD-iklWg8jfzEeogkRXClQ9CPvKN86kiYRP3cRa0","Message-ID":"\n <CACb0b4nzDuOuFnb+-WE0jWH8PQk8V3d5EbPiX3OdJ4MF9gB8mg@mail.gmail.com>","Subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","To":"Jakub Jelinek <jakub@redhat.com>","Cc":"Jason Merrill <jason@redhat.com>, gcc-patches@gcc.gnu.org,\n libstdc++@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"GPE-FzmpOO2WB6E9P5FihecdIunB85-gRvbSOKPz_CA_1776854116","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3680506,"web_url":"http://patchwork.ozlabs.org/comment/3680506/","msgid":"<CACb0b4n_tMLnD3ca76vPuqoNTWFKYo=i6whsVw-9aW+Zsjwt4w@mail.gmail.com>","list_archive_url":null,"date":"2026-04-22T10:36:01","subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Wed, 22 Apr 2026 at 11:34, Jonathan Wakely <jwakely@redhat.com> wrote:\n>\n> On Wed, 22 Apr 2026 at 11:23, Jakub Jelinek <jakub@redhat.com> wrote:\n> >\n> > Hi!\n> >\n> > Both __cpp_impl_reflection and __cpp_lib_reflection were increased from\n> > 202506L to 202603L post Croydon, I assume to show that P3795R2 (maybe some\n> > issues too) have been implemented.\n> > Now, we do implement P3795R2 except for the is_applicable_type,\n> > is_nothrow_applicable_type and apply_result metafunctions, but Jonathan says\n> > there is agreement in LWG that to test for availability of those one should\n> > test __cpp_lib_reflection >= 202603L && __cpp_lib_apply >= 202603L.\n> >\n> > So, this patch bumps both FTMs.\n> >\n> > Tested on x86_64-linux, ok for trunk?\n> >\n> > 2026-04-22  Jakub Jelinek  <jakub@redhat.com>\n> >\n> > gcc/c-family/\n> >         * c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_impl_reflection value\n> >         from 202506L to 202603L.\n> > gcc/testsuite/\n> >         * g++.dg/DRs/dr2581-2.C: Adjust for __cpp_impl_reflection bump from\n> >         202506L to 202603L.\n> >         * g++.dg/reflect/feat1.C: Likewise.  Also adjust for\n> >         __cpp_lib_reflection bump from 202506L to 202603L.\n> >         * g++.dg/reflect/feat2.C: Likewise.\n> >         * g++.dg/reflect/feat3.C: Likewise.\n> > libstdc++-v3/\n> >         * include/bits/version.def (reflection): Bump 202506L to 202603L\n> >         for both v and in extra_cond.\n> >         * include/bits/version.h: Regenerate.\n> >         * include/std/meta: Compare __glibcxx_reflection against\n> >         202603L rather than 202506L.\n> >         * include/std/type_traits: Compare __cpp_impl_reflection against\n> >         202603L rather than 202506L.\n> >         * src/c++23/std.cc.in: Likewise.  Compare __glibcxx_reflection against\n> >         202603L rather than 202506L.\n> >         * testsuite/20_util/is_structural/value.cc: Compare\n> >         __cpp_impl_reflection against 202603L rather than 202506L.\n> >         * testsuite/20_util/variable_templates_for_traits.cc: Likewise.\n> >\n> > --- gcc/c-family/c-cppbuiltin.cc.jj     2026-03-27 10:17:13.713337609 +0100\n> > +++ gcc/c-family/c-cppbuiltin.cc        2026-04-22 11:59:44.926135527 +0200\n> > @@ -1119,7 +1119,7 @@ c_cpp_builtins (cpp_reader *pfile)\n> >           cpp_define (pfile, \"__cpp_constexpr_virtual_inheritance=202506L\");\n> >           cpp_define (pfile, \"__cpp_expansion_statements=202506L\");\n> >           if (flag_reflection)\n> > -           cpp_define (pfile, \"__cpp_impl_reflection=202506L\");\n> > +           cpp_define (pfile, \"__cpp_impl_reflection=202603L\");\n> >           else\n> >             cpp_warn (pfile, \"__cpp_impl_reflection\");\n> >         }\n> > --- gcc/testsuite/g++.dg/DRs/dr2581-2.C.jj      2026-03-27 10:17:15.320311386 +0100\n> > +++ gcc/testsuite/g++.dg/DRs/dr2581-2.C 2026-04-22 12:02:27.265362686 +0200\n> > @@ -64,7 +64,7 @@\n> >  #define __cpp_impl_coroutine 201902L           // { dg-error \"'__cpp_impl_coroutine' redefined\" \"\" { target c++20 } }\n> >  #define __cpp_impl_destroying_delete 201806L   // { dg-error \"'__cpp_impl_destroying_delete' redefined\" \"\" { target c++20 } }\n> >  #define __cpp_impl_three_way_comparison 201907L        // { dg-error \"'__cpp_impl_three_way_comparison' redefined\" \"\" { target c++20 } }\n> > -#define __cpp_impl_reflection 202506L          // { dg-error \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n> > +#define __cpp_impl_reflection 202603L          // { dg-error \"'__cpp_impl_reflection' redefined\" \"\" { target c++26 } }\n> >  #define __cpp_implicit_move 202207L            // { dg-error \"'__cpp_implicit_move' redefined\" \"\" { target c++23 } }\n> >  #define __cpp_inheriting_constructors 201511L  // { dg-error \"'__cpp_inheriting_constructors' redefined\" \"\" { target c++20 } }\n> >  #define __cpp_init_captures 201803L            // { dg-error \"'__cpp_init_captures' redefined\" \"\" { target c++14 } }\n> > --- gcc/testsuite/g++.dg/reflect/feat1.C.jj     2026-03-27 10:17:16.125298250 +0100\n> > +++ gcc/testsuite/g++.dg/reflect/feat1.C        2026-04-22 12:00:26.919418259 +0200\n> > @@ -4,14 +4,14 @@\n> >\n> >  #ifndef __cpp_impl_reflection\n> >  #  error \"__cpp_impl_reflection\"\n> > -#elif __cpp_impl_reflection != 202506\n> > -#  error \"__cpp_impl_reflection != 202506\"\n> > +#elif __cpp_impl_reflection != 202603\n> > +#  error \"__cpp_impl_reflection != 202603\"\n> >  #endif\n> >\n> >  #include <meta>\n> >\n> >  #ifndef __cpp_lib_reflection\n> >  #  error \"__cpp_lib_reflection\"\n> > -#elif __cpp_lib_reflection != 202506\n> > -#  error \"__cpp_lib_reflection != 202506\"\n> > +#elif __cpp_lib_reflection != 202603\n> > +#  error \"__cpp_lib_reflection != 202603\"\n> >  #endif\n> > --- gcc/testsuite/g++.dg/reflect/feat2.C.jj     2026-03-27 10:17:16.125298250 +0100\n> > +++ gcc/testsuite/g++.dg/reflect/feat2.C        2026-04-22 12:00:42.738148067 +0200\n> > @@ -6,8 +6,8 @@\n> >\n> >  #ifndef __cpp_lib_reflection\n> >  #  error \"__cpp_lib_reflection\"\n> > -#elif __cpp_lib_reflection != 202506\n> > -#  error \"__cpp_lib_reflection != 202506\"\n> > +#elif __cpp_lib_reflection != 202603\n> > +#  error \"__cpp_lib_reflection != 202603\"\n> >  #endif\n> >\n> >  #ifndef __cpp_lib_define_static\n> > --- gcc/testsuite/g++.dg/reflect/feat3.C.jj     2026-03-27 10:17:16.125298250 +0100\n> > +++ gcc/testsuite/g++.dg/reflect/feat3.C        2026-04-22 12:01:46.374061130 +0200\n> > @@ -6,8 +6,8 @@\n> >\n> >  #ifndef __cpp_lib_reflection\n> >  #  error \"__cpp_lib_reflection\"\n> > -#elif __cpp_lib_reflection != 202506\n> > -#  error \"__cpp_lib_reflection != 202506\"\n> > +#elif __cpp_lib_reflection != 202603\n> > +#  error \"__cpp_lib_reflection != 202603\"\n> >  #endif\n> >\n> >  #ifndef __cpp_lib_define_static\n> > --- libstdc++-v3/include/bits/version.def.jj    2026-04-14 21:13:35.039460718 +0200\n> > +++ libstdc++-v3/include/bits/version.def       2026-04-22 12:03:42.709074062 +0200\n> > @@ -2337,9 +2337,9 @@ ftms = {\n> >  ftms = {\n> >    name = reflection;\n> >    values = {\n> > -    v = 202506;\n> > +    v = 202603;\n> >      cxxmin = 26;\n> > -    extra_cond = \"__cpp_impl_reflection >= 202506L\";\n> > +    extra_cond = \"__cpp_impl_reflection >= 202603L\";\n> >      cxx11abi = yes;\n> >    };\n> >  };\n> > --- libstdc++-v3/include/bits/version.h.jj      2026-04-14 21:13:35.039460718 +0200\n> > +++ libstdc++-v3/include/bits/version.h 2026-04-22 12:03:49.126595150 +0200\n> > @@ -2602,10 +2602,10 @@\n> >  #undef __glibcxx_want_philox_engine\n> >\n> >  #if !defined(__cpp_lib_reflection)\n> > -# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202506L)\n> > -#  define __glibcxx_reflection 202506L\n> > +# if (__cplusplus >  202302L) && _GLIBCXX_USE_CXX11_ABI && (__cpp_impl_reflection >= 202603L)\n> > +#  define __glibcxx_reflection 202603L\n> >  #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_reflection)\n> > -#   define __cpp_lib_reflection 202506L\n> > +#   define __cpp_lib_reflection 202603L\n> >  #  endif\n> >  # endif\n> >  #endif /* !defined(__cpp_lib_reflection) */\n> > --- libstdc++-v3/include/std/meta.jj    2026-04-21 18:24:44.122033404 +0200\n> > +++ libstdc++-v3/include/std/meta       2026-04-22 12:04:19.089452664 +0200\n> > @@ -37,7 +37,7 @@\n> >  #define __glibcxx_want_define_static\n> >  #include <bits/version.h>\n> >\n> > -#if __glibcxx_reflection >= 202506L // C++ >= 26 && __cpp_impl_reflection\n> > +#if __glibcxx_reflection >= 202603L // C++ >= 26 && __cpp_impl_reflection\n>\n> I don't think we need to change any of the #if checks below here,\n> because nothing in those #if groups was changed by P3795. The checks\n> in e.g. <type_traits> and the tests are saying \"is the value of the\n> macro high enough that we should provide these features?\" and that's\n> true for the old value.\n\nThe #if in <meta> guards the addition of the annotations vector to\ndata_member_spec, so checking the new value there makes sense.\n\n>\n>\n> >\n> >  #include <array>\n> >  #include <initializer_list>\n> > --- libstdc++-v3/include/std/type_traits.jj     2026-04-08 15:33:26.695042703 +0200\n> > +++ libstdc++-v3/include/std/type_traits        2026-04-22 12:04:59.783757579 +0200\n> > @@ -755,7 +755,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n> >      : public false_type { };\n> >  #endif\n> >\n> > -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> > +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n> >    /// is_reflection\n> >    template<typename _Tp>\n> >      struct is_reflection\n> > @@ -844,7 +844,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n> >      struct is_fundamental\n> >      : public __or_<is_arithmetic<_Tp>, is_void<_Tp>,\n> >                    is_null_pointer<_Tp>\n> > -#if __cpp_impl_reflection >= 202506L\n> > +#if __cpp_impl_reflection >= 202603L\n> >                    , is_reflection<_Tp>\n> >  #endif\n> >                    >::type\n> > @@ -3561,7 +3561,7 @@ template <typename _Tp>\n> >      is_member_function_pointer<_Tp>::value;\n> >  #endif\n> >\n> > -#if __cpp_impl_reflection >= 202506L // C++ >= 26\n> > +#if __cpp_impl_reflection >= 202603L // C++ >= 26\n> >  template <typename _Tp>\n> >    inline constexpr bool is_reflection_v = false;\n> >  template <>\n> > --- libstdc++-v3/src/c++23/std.cc.in.jj 2026-04-10 08:45:20.742811345 +0200\n> > +++ libstdc++-v3/src/c++23/std.cc.in    2026-04-22 12:05:31.902208977 +0200\n> > @@ -2083,7 +2083,7 @@ export namespace std::pmr\n> >  }\n> >\n> >  // <meta>\n> > -#if __glibcxx_reflection >= 202506L\n> > +#if __glibcxx_reflection >= 202603L\n> >  export namespace std\n> >  {\n> >  #if __has_builtin(__builtin_is_string_literal)\n> > @@ -3572,7 +3572,7 @@ export namespace std\n> >    using std::is_implicit_lifetime;\n> >    using std::is_implicit_lifetime_v;\n> >  #endif\n> > -#if __cpp_impl_reflection >= 202506L\n> > +#if __cpp_impl_reflection >= 202603L\n> >    using std::is_reflection;\n> >    using std::is_reflection_v;\n> >  #endif\n> > --- libstdc++-v3/testsuite/20_util/is_structural/value.cc.jj    2026-04-03 20:51:17.921877231 +0200\n> > +++ libstdc++-v3/testsuite/20_util/is_structural/value.cc       2026-04-22 12:06:06.519617691 +0200\n> > @@ -24,7 +24,7 @@ void test01()\n> >    static_assert(test_category<is_structural, int (ClassType::*)>(true), \"\");\n> >    static_assert(test_category<is_structural, int (ClassType::*) (int)>(true), \"\");\n> >    static_assert(test_category<is_structural, std::nullptr_t>(true), \"\");\n> > -#if __cpp_impl_reflection >= 202506L\n> > +#if __cpp_impl_reflection >= 202603L\n> >    static_assert(test_category<is_structural, decltype(^^::)>(true), \"\");\n> >  #endif\n> >    static_assert(test_category<is_structural, int&>(true), \"\");\n> > --- libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc.jj  2026-04-08 07:49:13.479066346 +0200\n> > +++ libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc     2026-04-22 12:06:28.514242009 +0200\n> > @@ -331,7 +331,7 @@ static_assert(is_convertible_v<int&, con\n> >  static_assert(!is_convertible_v<const int&, int&>\n> >               && !is_convertible<const int&, int&>::value, \"\");\n> >\n> > -#if __cpp_impl_reflection >= 202506L\n> > +#if __cpp_impl_reflection >= 202603L\n> >  static_assert(is_reflection_v<decltype(^^int)>\n> >               && is_reflection<decltype(^^int)>::value, \"\");\n> >  static_assert(!is_reflection_v<int> && !is_reflection<int>::value, \"\");\n> >\n> >         Jakub\n> >","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=hb6AhMRZ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=hb6AhMRZ","sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com","sourceware.org; spf=pass smtp.mailfrom=redhat.com","server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0xGX5gLqz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 21:05:40 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 94EC742D1F68\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 11:05:38 +0000 (GMT)","from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 71FA54366815\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 10:36:21 +0000 (GMT)","from mail-yx1-f72.google.com (mail-yx1-f72.google.com\n [74.125.224.72]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-53-cbmgQYaLOkuzBFl5PGrb_Q-1; Wed, 22 Apr 2026 06:36:19 -0400","by mail-yx1-f72.google.com with SMTP id\n 956f58d0204a3-651bd9b4bccso9532423d50.3\n for <gcc-patches@gcc.gnu.org>; Wed, 22 Apr 2026 03:36:19 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 94EC742D1F68","OpenDKIM Filter v2.11.0 sourceware.org 71FA54366815"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 71FA54366815","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 71FA54366815","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1776854181; cv=none;\n b=nMcYiHoNnJG4UTksOXzfMAb1zGgbqQEOzBagV/rYSa9YHUEXIetytpuAMPmjmfNbK5R1UxxwQH8OBVSENGdecGjhQ5SsbAvcfKY1rZiMYGQ9quhfDnGqyTLz1nJU7A/ayimBJOK6I6tmSnCKNDRVYf0qaKDAXMgVkLfjvMkBGsY=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1776854181; c=relaxed/simple;\n bh=w8cOsNo+DJmsXLdR2YYk9qz8MmDkxh3ccziiUAPuHps=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=rLf53x1Y2wUg3Vc2g8fGmFl66zfajTjkI6C9zWW8keW3ZZCmfAyhrb2f/6DQhEFH1QmeQXEhHBLB5mmYrDTu7h9f8Sf+auiy8aN03N11+gFAX+2QihJtSVMcaQYeG6qz7uXvD9k3Zx7NxewRjF7bF2hshnqURkARXBWw8IELIAE=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1776854180;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n in-reply-to:in-reply-to:references:references;\n bh=tunBlexECxPIvcKtjpjJgERyGR4OugwiP2XN17rjwSw=;\n b=hb6AhMRZv7FxMFt+KlS/ZzAGd68H7tf5spFsLZkC7yb1o2yL0y8j3YpoGYWlJM25RQTqbM\n wxMH2MgeED6ZbTTMHnp5pgkdbrR5OYlLIQaCWM5Keba39vGYKMbI8xwqfPqimb593fC2/f\n 94OAvmM/DWD5rX+rz657UmU4ftxJ+ro=","X-MC-Unique":"cbmgQYaLOkuzBFl5PGrb_Q-1","X-Mimecast-MFC-AGG-ID":"cbmgQYaLOkuzBFl5PGrb_Q_1776854179","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776854179; x=1777458979;\n h=cc:to:subject:message-id:date:from:in-reply-to:references\n :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n :message-id:reply-to;\n bh=tunBlexECxPIvcKtjpjJgERyGR4OugwiP2XN17rjwSw=;\n b=Y2pyvYL3MtrAlKj7xHVmHFFimB2ka4ZeXzLyKchLDIhxqz8+ROHZgUIxjJ0ko/8cWM\n OWA6VSUh2a+UhJW/jp/CXqNzv6Fxd3tC6RQXVfFNPhroe0eBZgmDbJn6vn22mDoALT4L\n F6dJ8IIGaQ8IXeBFU0aX2AAUCb5bVqaM+xdzlmGPykbcpViN4O9pvVX9cIQJ4tdyvIzF\n kOQLa3MeCw/DlGSSszz98GVMb6uajtXMC1qaM3sT+BlDTZNsV4KZSHqqoQMW1TazDqK8\n 5PZEzrbAngx4/Ii+Hv1OO4yrWlQJ45+EJEKJekRXhHAw159Nsug2RszHC0CtB+94yxrw\n 7kRw==","X-Forwarded-Encrypted":"i=1;\n AFNElJ94zRcGnB3Xa35jj81egu7FPR48kMGXMl377ahM29tlWl92j8mg9004CtFbxV2r4VSAIDtl7sDW3iOw4A==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YzSYMDLsRShR51lIAbYQSb6viPKbLb6DOEGzgZ0ZOp8gWQYGNXp\n 8LAyuuQ/FHNcTkxpgZLWFKGrQuenwe3gJZchEvGdBRLlK+xqbDSqqTRVhWIqX2ONC6sXhEXZTcV\n A6lu8MaNxPtkweW3TEqqSGNkKMW0la0XvBwhUxsMWYZDkC3iUj0vwfQUJ8LZVwBoxcYBncVIuse\n CE/JBtQRlG7o/sj2uwfKn+WdVx091Fj5AnwQ==","X-Gm-Gg":"AeBDievzZPn9b7/Dq41ytQyB4exG47cEnzfD3NFFQFFacC8bz7r2a+tKFySaUMylesR\n hdDuzF7jvKFTRn+lGJm/ZbXiJpRcxONLQGBBwluMhDyrJoTY5vje/Cgu31As09qhgWP/rK3DO2x\n ZpijwyEvphFCVvIdD/yLrfCicPeN32RYQsxgAtffcbF9mlWMogEG+IZ0Tt6/Dc9cWrOh1QoVEcF\n xmaZa8iZBnJvqpQDt0/vVAaAQjAQK2AuorV3O6G1Cc6sRxLgD5qCXSUJvAAZrIA/RbW/Q8L4i2F\n Ag==","X-Received":["by 2002:a53:d007:0:b0:654:5a37:de98 with SMTP id\n 956f58d0204a3-6545a37ea13mr736407d50.60.1776854178723;\n Wed, 22 Apr 2026 03:36:18 -0700 (PDT)","by 2002:a53:d007:0:b0:654:5a37:de98 with SMTP id\n 956f58d0204a3-6545a37ea13mr736382d50.60.1776854178160; Wed, 22 Apr 2026\n 03:36:18 -0700 (PDT)"],"MIME-Version":"1.0","References":"<aeihoaiuRwi1vH70@tucnak>\n <CACb0b4nzDuOuFnb+-WE0jWH8PQk8V3d5EbPiX3OdJ4MF9gB8mg@mail.gmail.com>","In-Reply-To":"\n <CACb0b4nzDuOuFnb+-WE0jWH8PQk8V3d5EbPiX3OdJ4MF9gB8mg@mail.gmail.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Wed, 22 Apr 2026 11:36:01 +0100","X-Gm-Features":"AQROBzD6ebYD0MIyVAbE5P6xlaPV0AiW1IX8SLvQCl0hy2JDgRBrXawndkQ9gOw","Message-ID":"\n <CACb0b4n_tMLnD3ca76vPuqoNTWFKYo=i6whsVw-9aW+Zsjwt4w@mail.gmail.com>","Subject":"Re: [PATCH] c++,\n libstc++: Bump __cpp_impl_reflection and __cpp_lib_reflection","To":"Jakub Jelinek <jakub@redhat.com>","Cc":"Jason Merrill <jason@redhat.com>, gcc-patches@gcc.gnu.org,\n libstdc++@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"pxOw568l8p9uJLLy4Kap76dm8QeVhZ3flRA7qzOkBaU_1776854179","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]