Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2217910/?format=api
{ "id": 2217910, "url": "http://patchwork.ozlabs.org/api/patches/2217910/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/acry6OfEu9mofOY-@tucnak/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<acry6OfEu9mofOY-@tucnak>", "list_archive_url": null, "date": "2026-03-30T22:02:16", "name": "c++, libstdc++, v3: Implement current_{function,class,namespace} metafn addition from P3795R2", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "86cd2785d2138844f86aae98c5764693eb9a5899", "submitter": { "id": 671, "url": "http://patchwork.ozlabs.org/api/people/671/?format=api", "name": "Jakub Jelinek", "email": "jakub@redhat.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/acry6OfEu9mofOY-@tucnak/mbox/", "series": [ { "id": 498104, "url": "http://patchwork.ozlabs.org/api/series/498104/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=498104", "date": "2026-03-30T22:02:16", "name": "c++, libstdc++, v3: Implement current_{function,class,namespace} metafn addition from P3795R2", "version": 1, "mbox": "http://patchwork.ozlabs.org/series/498104/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2217910/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2217910/checks/", "tags": {}, "related": [], "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=LZDWH6C7;\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=LZDWH6C7", "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 4fl4xw3F2Zz1y1q\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 31 Mar 2026 09:03:16 +1100 (AEDT)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 55EC34B92083\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 22:03:14 +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 525884B920AF\n for <gcc-patches@gcc.gnu.org>; Mon, 30 Mar 2026 22:02:24 +0000 (GMT)", "from mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-541-M_mU5Zb8P9mt_6uOulgABg-1; Mon,\n 30 Mar 2026 18:02:21 -0400", "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id A415E19560AB; Mon, 30 Mar 2026 22:02:20 +0000 (UTC)", "from tucnak.zalov.cz (unknown [10.44.32.9])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id 6856E1954102; Mon, 30 Mar 2026 22:02:19 +0000 (UTC)", "from tucnak.zalov.cz (localhost [127.0.0.1])\n by tucnak.zalov.cz (8.18.1/8.18.1) with ESMTPS id 62UM2GLM722338\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Tue, 31 Mar 2026 00:02:16 +0200", "(from jakub@localhost)\n by tucnak.zalov.cz (8.18.1/8.18.1/Submit) id 62UM2GlC722337;\n Tue, 31 Mar 2026 00:02:16 +0200" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 55EC34B92083", "OpenDKIM Filter v2.11.0 sourceware.org 525884B920AF" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 525884B920AF", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 525884B920AF", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774908144; cv=none;\n b=eZRzoRzMt7RgQLfKVLPsTVW8e4A5lhA1YWhyQDBPP5GRRG8aPPVJBqaaJV8YGuNvmamyYQmyPPFDeYYDyDBzJmRI20XVvnBt9QKPvSPcLt0pa3bqAszuw20Tq79TpunmYrNnymQt0EXg5HfdQ8XRYERmC4qWMm01Y2wKDJguM/s=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774908144; c=relaxed/simple;\n bh=8/HnCsRpb43gCPoQeZce2OsLoqmxmPLlBe4oKzPsfFA=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=o74egWOS8ABmKXCPCav6+KwMpWgjDC602JQHrhPUfioed3sOcVFBPpLHca8Y3VJk0ejjpruQsXBj9CUCk2aDK2dXbA/QNI17Tmt1i0aznXmWN/7jVK9yTNBqDJm+mFRe7rGcqMzmD5J0wNillIkSdMzMjYz1wAVWVTQuZny/TnA=", "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=1774908144;\n h=from:from:reply-to:reply-to:subject:subject:date:date:\n message-id:message-id:to:to:cc:cc:mime-version:mime-version:\n content-type:content-type:in-reply-to:in-reply-to: references:references;\n bh=eXdlgXSxvtfYpZaEPck113OQrnHZ65/n0Oeh+XM9oXQ=;\n b=LZDWH6C7+6sQun36npKkd3PzDHfImKVlER6LuRMrwTn0IJhFsA7jFG2YHzHPaXF/gLj6rP\n HevUJPrUQzaEvaMfGQ+30HUn8jgN42F7XPXw1N5Ib0xcBWPV3F8nqWmXvtZ2nQUMci9etT\n AIbQ132KGbDA/jH6PWsJ952iGmu93hs=", "X-MC-Unique": "M_mU5Zb8P9mt_6uOulgABg-1", "X-Mimecast-MFC-AGG-ID": "M_mU5Zb8P9mt_6uOulgABg_1774908141", "Date": "Tue, 31 Mar 2026 00:02:16 +0200", "From": "Jakub Jelinek <jakub@redhat.com>", "To": "Jason Merrill <jason@redhat.com>", "Cc": "Marek Polacek <polacek@redhat.com>, Jonathan Wakely <jwakely@redhat.com>,\n gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org", "Subject": "[PATCH] c++, libstdc++, v3: Implement\n current_{function,class,namespace} metafn addition from P3795R2", "Message-ID": "<acry6OfEu9mofOY-@tucnak>", "References": "<acay_1BCmIb6JYbg@tucnak> <acgHqAm-2mPk4g-F@tucnak>\n <863c77bc-bc95-4415-b0b7-a3991100913a@redhat.com>", "MIME-Version": "1.0", "In-Reply-To": "<863c77bc-bc95-4415-b0b7-a3991100913a@redhat.com>", "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "QmziKQSEzLxhc7CvGxPNwIuetcPLZ3A-6ZPSfjtyBIE_1774908141", "X-Mimecast-Originator": "redhat.com", "Content-Type": "text/plain; charset=us-ascii", "Content-Disposition": "inline", "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>", "Reply-To": "Jakub Jelinek <jakub@redhat.com>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "On Mon, Mar 30, 2026 at 03:59:28PM -0400, Jason Merrill wrote:\n> > +\t /* Similarly for these 3 metafns. */\n> > +\t if (id_equal (DECL_NAME (fn), \"current_function\")\n> > +\t\t|| id_equal (DECL_NAME (fn), \"current_class\")\n> > +\t\t|| id_equal (DECL_NAME (fn), \"current_namespace\"))\n> \n> Optionally, I wonder about looking up the METAFN_ code rather than a bunch\n> of id_equal?\n\nI wanted to avoid that because right now metafns.h is fairly large header\nincluded in reflect.cc only ATM. And actually it isn't even includable in\nmultiple TUs, while the gperf generated hash method is inline, the\nstatic find method is not and we can't have multiple definitions thereof.\n\n> > --- gcc/cp/reflect.cc.jj\t2026-03-27 10:17:14.033332387 +0100\n> > +++ gcc/cp/reflect.cc\t2026-03-27 15:51:18.122236375 +0100\n> > @@ -6236,11 +6236,11 @@ eval_reflect_constant_array (location_t\n> > return get_reflection_raw (loc, decl);\n> > }\n> > -/* Process std::meta::access_context::current. */\n> > +/* Return CURRENT-SCOPE(P). */\n> > static tree\n> > -eval_access_context_current (location_t loc, const constexpr_ctx *ctx,\n> > -\t\t\t tree call, bool *non_constant_p)\n> > +current_scope (location_t loc, const constexpr_ctx *ctx, tree call,\n> \n> There's already a current_scope in search.cc, this shouldn't have the same\n> name.\n\nIt is static, but changed that to reflect_current_scope.\n\n> > +/* Process std::meta::current_namespace. */\n> > +\n> > +static tree\n> > +eval_current_namespace (location_t loc, const constexpr_ctx *ctx,\n> > +\t\t\ttree call, bool *non_constant_p)\n> > +{\n> > + tree scope = current_scope (loc, ctx, call, non_constant_p,\n> > +\t\t\t \"std::meta::current_namespace\");\n> > + while (TREE_CODE (scope) != NAMESPACE_DECL)\n> > + {\n> > + if (DECL_P (scope))\n> > +\tscope = CP_DECL_CONTEXT (scope);\n> > + else\n> > +\tscope = CP_TYPE_CONTEXT (scope);\n> > + }\n> \n> decl_namespace_context?\n\nChanged.\n\n2026-03-30 Jakub Jelinek <jakub@redhat.com>\n\ngcc/cp/\n\t* metafns.gperf (enum metafn_code): Add METAFN_CURRENT_FUNCTION,\n\tMETAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.\n\t(enum metafn_kind): Add METAFN_KIND_INFO_VOID.\n\t(current_function, current_class, current_namespace): New\n\tmetafunctions.\n\t* pt.cc (value_dependent_expression_p): Make current_function(),\n\tcurrent_class() and current_namespace() calls dependent if they\n\tare inside of template.\n\t* reflect.cc (reflect_current_scope, eval_current_function,\n\teval_current_class, eval_current_namespace): New functions.\n\t(eval_access_context_current): Use reflect_current_scope.\n\t(process_metafunction): Handle METAFN_CURRENT_FUNCTION,\n\tMETAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.\n\t* metafns.h: Regenerate.\ngcc/testsuite/\n\t* g++.dg/reflect/current_function1.C: New test.\n\t* g++.dg/reflect/current_function2.C: New test.\n\t* g++.dg/reflect/current_class1.C: New test.\n\t* g++.dg/reflect/current_class2.C: New test.\n\t* g++.dg/reflect/current_namespace1.C: New test.\nlibstdc++-v3/\n\t* include/std/meta (std::meta::current_function,\n\tstd::meta::current_class, std::meta::current_namespace): New\n\tdeclarations.\n\t* src/c++23/std.cc.in: Export those 3.\n\n\n\n\tJakub", "diff": "--- gcc/cp/metafns.gperf.jj\t2026-03-27 10:17:14.022332567 +0100\n+++ gcc/cp/metafns.gperf\t2026-03-27 15:15:06.493926265 +0100\n@@ -119,6 +119,9 @@ enum metafn_code {\n METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,\n METAFN_HAS_INACCESSIBLE_BASES,\n METAFN_HAS_INACCESSIBLE_SUBOBJECTS,\n+ METAFN_CURRENT_FUNCTION,\n+ METAFN_CURRENT_CLASS,\n+ METAFN_CURRENT_NAMESPACE,\n METAFN_MEMBERS_OF,\n METAFN_BASES_OF,\n METAFN_STATIC_DATA_MEMBERS_OF,\n@@ -363,6 +366,8 @@ enum metafn_kind {\n METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET\n = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT)\n | METAFN_KIND_RET_BOOL,\n+ METAFN_KIND_INFO_VOID\n+ = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,\n METAFN_KIND_INFO_INFO\n = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,\n METAFN_KIND_INFO_TINFO\n@@ -554,6 +559,9 @@ is_accessible, METAFN_IS_ACCESSIBLE, MET\n has_inaccessible_nonstatic_data_members, METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,\n has_inaccessible_bases, METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,\n has_inaccessible_subobjects, METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,\n+current_function, METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,\n+current_class, METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,\n+current_namespace, METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,\n members_of, METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,\n bases_of, METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,\n static_data_members_of, METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,\n--- gcc/cp/pt.cc.jj\t2026-03-27 10:17:14.033332387 +0100\n+++ gcc/cp/pt.cc\t2026-03-27 15:20:11.586883334 +0100\n@@ -29794,12 +29794,19 @@ value_dependent_expression_p (tree expre\n \t is enclosed by a scope corresponding to a templated entity. */\n \tif (flag_reflection\n \t && fn\n-\t && metafunction_p (fn)\n-\t && id_equal (DECL_NAME (fn), \"current\")\n-\t && DECL_CLASS_SCOPE_P (fn)\n-\t && id_equal (TYPE_IDENTIFIER (DECL_CONTEXT (fn)),\n-\t\t\t \"access_context\"))\n-\t return true;\n+\t && metafunction_p (fn))\n+\t {\n+\t if (id_equal (DECL_NAME (fn), \"current\")\n+\t\t&& DECL_CLASS_SCOPE_P (fn)\n+\t\t&& id_equal (TYPE_IDENTIFIER (DECL_CONTEXT (fn)),\n+\t\t\t \"access_context\"))\n+\t return true;\n+\t /* Similarly for these 3 metafns. */\n+\t if (id_equal (DECL_NAME (fn), \"current_function\")\n+\t\t|| id_equal (DECL_NAME (fn), \"current_class\")\n+\t\t|| id_equal (DECL_NAME (fn), \"current_namespace\"))\n+\t return true;\n+\t }\n \n \treturn false;\n }\n--- gcc/cp/reflect.cc.jj\t2026-03-27 10:17:14.033332387 +0100\n+++ gcc/cp/reflect.cc\t2026-03-27 15:51:18.122236375 +0100\n@@ -6236,11 +6236,11 @@ eval_reflect_constant_array (location_t\n return get_reflection_raw (loc, decl);\n }\n \n-/* Process std::meta::access_context::current. */\n+/* Return CURRENT-SCOPE(P). */\n \n static tree\n-eval_access_context_current (location_t loc, const constexpr_ctx *ctx,\n-\t\t\t tree call, bool *non_constant_p)\n+reflect_current_scope (location_t loc, const constexpr_ctx *ctx, tree call,\n+\t\t bool *non_constant_p, const char *name)\n {\n tree scope = cxx_constexpr_caller (ctx);\n /* Ignore temporary current_function_decl changes caused by\n@@ -6259,8 +6259,8 @@ eval_access_context_current (location_t\n \t /* Outside of functions limit this to manifestly constant-evaluation\n \t so that we don't fold it prematurely. */\n \t if (!cxx_constexpr_quiet_p (ctx))\n-\t error_at (loc, \"%<access_context::current%> used outside of \"\n-\t\t\t \"manifestly constant-evaluation\");\n+\t error_at (loc, \"%qs used outside of manifestly constant-evaluation\",\n+\t\t name);\n \t *non_constant_p = true;\n \t return call;\n \t}\n@@ -6276,6 +6276,63 @@ eval_access_context_current (location_t\n \t && (lam = CLASSTYPE_LAMBDA_EXPR (CP_DECL_CONTEXT (scope)))\n \t && LAMBDA_EXPR_CONSTEVAL_BLOCK_P (lam))\n scope = CP_TYPE_CONTEXT (CP_DECL_CONTEXT (scope));\n+ return scope;\n+}\n+\n+/* Process std::meta::current_function. */\n+\n+static tree\n+eval_current_function (location_t loc, const constexpr_ctx *ctx,\n+\t\t tree call, bool *non_constant_p, tree *jump_target,\n+\t\t tree fun)\n+{\n+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,\n+\t\t\t\t \"std::meta::current_function\");\n+ if (TREE_CODE (scope) != FUNCTION_DECL)\n+ throw_exception (loc, ctx, \"current scope does not represent a function\",\n+\t\t fun, non_constant_p, jump_target);\n+ return get_reflection_raw (loc, scope);\n+}\n+\n+/* Process std::meta::current_class. */\n+\n+static tree\n+eval_current_class (location_t loc, const constexpr_ctx *ctx,\n+\t\t tree call, bool *non_constant_p, tree *jump_target,\n+\t\t tree fun)\n+{\n+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,\n+\t\t\t\t \"std::meta::current_class\");\n+ if (TREE_CODE (scope) == FUNCTION_DECL\n+ && DECL_CONTEXT (scope)\n+ && TYPE_P (DECL_CONTEXT (scope)))\n+ scope = DECL_CONTEXT (scope);\n+ if (!CLASS_TYPE_P (scope))\n+ throw_exception (loc, ctx, \"current scope does not represent a class\"\n+\t\t\t \" nor a member function\",\n+\t\t fun, non_constant_p, jump_target);\n+ return get_reflection_raw (loc, scope);\n+}\n+\n+/* Process std::meta::current_namespace. */\n+\n+static tree\n+eval_current_namespace (location_t loc, const constexpr_ctx *ctx,\n+\t\t\ttree call, bool *non_constant_p)\n+{\n+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,\n+\t\t\t\t \"std::meta::current_namespace\");\n+ return get_reflection_raw (loc, decl_namespace_context (scope));\n+}\n+\n+/* Process std::meta::access_context::current. */\n+\n+static tree\n+eval_access_context_current (location_t loc, const constexpr_ctx *ctx,\n+\t\t\t tree call, bool *non_constant_p)\n+{\n+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,\n+\t\t\t\t \"std::meta::access_context::current\");\n tree access_context = TREE_TYPE (call);\n if (TREE_CODE (access_context) != RECORD_TYPE)\n {\n@@ -7690,6 +7747,14 @@ process_metafunction (const constexpr_ct\n return eval_has_inaccessible_subobjects (loc, ctx, h, expr, call,\n \t\t\t\t\t non_constant_p, jump_target,\n \t\t\t\t\t fun);\n+ case METAFN_CURRENT_FUNCTION:\n+ return eval_current_function (loc, ctx, call, non_constant_p,\n+\t\t\t\t jump_target, fun);\n+ case METAFN_CURRENT_CLASS:\n+ return eval_current_class (loc, ctx, call, non_constant_p,\n+\t\t\t\t jump_target, fun);\n+ case METAFN_CURRENT_NAMESPACE:\n+ return eval_current_namespace (loc, ctx, call, non_constant_p);\n case METAFN_MEMBERS_OF:\n return eval_members_of (loc, ctx, h, expr, call, non_constant_p,\n \t\t\t jump_target, fun);\n--- gcc/testsuite/g++.dg/reflect/current_function1.C.jj\t2026-03-27 15:56:04.804555671 +0100\n+++ gcc/testsuite/g++.dg/reflect/current_function1.C\t2026-03-27 16:38:06.301962448 +0100\n@@ -0,0 +1,76 @@\n+// { dg-do compile { target c++26 } }\n+// { dg-additional-options \"-freflection\" }\n+// Test std::current_function.\n+\n+#include <meta>\n+\n+using namespace std::meta;\n+\n+consteval info\n+foo (info x = current_function ())\n+{\n+ static_assert (current_function () == ^^foo);\n+ return x;\n+}\n+\n+static_assert (foo (^^std) == ^^std);\n+\n+void\n+qux ()\n+{\n+ static_assert (foo () == ^^qux);\n+}\n+\n+struct T\n+{\n+ info t = current_function ();\n+};\n+\n+struct U\n+{\n+ consteval U () {}\n+ info u = current_function ();\n+};\n+\n+struct V : U\n+{\n+ using U::U;\n+ info v = current_function ();\n+};\n+\n+void\n+bar ()\n+{\n+ static_assert (current_function () == ^^bar);\n+ static_assert (foo (^^foo) == ^^foo);\n+ static_assert (foo () == ^^bar);\n+ static_assert (T {}.t == ^^bar);\n+ consteval {\n+ static_assert (current_function () == ^^bar);\n+ consteval {\n+ static_assert (current_function () == ^^bar);\n+ }\n+ }\n+ auto l = [] () {\n+ int v = 0;\n+ static_assert (current_function () == parent_of (^^v));\n+ static_assert (parent_of (parent_of (current_function ())) == ^^bar);\n+ };\n+ auto l2 = [] () -> int (&) [current_function () == ^^bar ? 2 : 3] {\n+ static int a[2];\n+ return a;\n+ };\n+}\n+\n+consteval bool\n+baz ()\n+{\n+ constexpr U u;\n+ static_assert (is_constructor (u.u) && parent_of (u.u) == ^^U);\n+ constexpr V v;\n+ static_assert (is_constructor (v.u) && parent_of (v.u) == ^^U);\n+ static_assert (is_constructor (v.v) && parent_of (v.v) == ^^V);\n+ return true;\n+}\n+\n+static_assert (baz ());\n--- gcc/testsuite/g++.dg/reflect/current_function2.C.jj\t2026-03-27 16:43:41.361420414 +0100\n+++ gcc/testsuite/g++.dg/reflect/current_function2.C\t2026-03-27 17:26:07.718334831 +0100\n@@ -0,0 +1,78 @@\n+// { dg-do compile { target c++26 } }\n+// { dg-additional-options \"-freflection\" }\n+// Test std::meta::access_context.\n+\n+#include <meta>\n+\n+using namespace std::meta;\n+\n+constexpr auto a = current_function ();\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+\n+consteval info\n+foo (info x = current_function ())\n+{\n+ return x;\n+}\n+\n+static_assert (foo (^^std) == ^^std);\n+constexpr auto b = foo ();\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+\n+namespace N\n+{\n+ constexpr auto c = current_function ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ constexpr auto d = foo ();\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ namespace M\n+ {\n+ constexpr auto e = current_function ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ constexpr auto f = foo ();\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ consteval {\n+ constexpr auto g = current_function ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ consteval {\n+\tconstexpr auto h = foo ();\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ }\n+ }\n+ }\n+}\n+\n+struct T\n+{\n+ static_assert (current_function () != ^^T);\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+\t\t\t\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+ static_assert (foo () != ^^T);\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ info t = current_function ();\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+};\n+\n+struct U\n+{\n+ consteval U () {}\n+ info u = current_function ();\n+};\n+\n+struct V : U\n+{\n+ using U::U;\n+ info v = current_function ();\n+ consteval {\n+ static_assert (current_function () != ^^V);\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ consteval {\t\t\t\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+ static_assert (current_function () != ^^V);\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ }\t\t\t\t\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+ }\n+};\n+\n+consteval {\n+ static_assert (current_function () != ^^::);\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ consteval {\t\t\t\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+ static_assert (current_function () != ^^::);\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a function'\" }\n+ }\t\t\t\t\t\t\t// { dg-error \"non-constant condition for static assertion\" \"\" { target *-*-* } .-1 }\n+}\n+\n+namespace O\n+{\n+ int a[2];\n+ auto\n+ foo () -> int (&) [current_function () != ^^O ? 2 : 3]\t// { dg-error \"size of array is not an integral constant-expression\" }\n+ {\n+ return a;\t\t\t\t\t\t// { dg-error \"invalid initialization of reference of type\" }\n+ }\n+}\n--- gcc/testsuite/g++.dg/reflect/current_class1.C.jj\t2026-03-27 16:15:47.965107295 +0100\n+++ gcc/testsuite/g++.dg/reflect/current_class1.C\t2026-03-27 17:14:36.688766585 +0100\n@@ -0,0 +1,70 @@\n+// { dg-do compile { target c++26 } }\n+// { dg-additional-options \"-freflection\" }\n+// Test std::meta::current_class.\n+\n+#include <meta>\n+\n+using namespace std::meta;\n+\n+consteval info\n+foo (info x = current_class ())\n+{\n+ try\n+ {\n+ current_class ();\n+ }\n+ catch (const std::meta::exception &)\n+ {\n+ return x;\n+ }\n+ throw 1;\n+}\n+\n+static_assert (foo (^^std) == ^^std);\n+\n+struct T\n+{\n+ static_assert (current_class () == ^^T);\n+ static_assert (foo () == ^^T);\n+ info t = current_class ();\n+};\n+\n+struct U\n+{\n+ static_assert (current_class () == ^^U);\n+ static_assert (foo () == ^^U);\n+ consteval U () {}\n+ info u = current_class ();\n+};\n+\n+struct V : U\n+{\n+ static_assert (current_class () == ^^V);\n+ static_assert (foo () == ^^V);\n+ using U::U;\n+ consteval {\n+ static_assert (current_class () == ^^V);\n+ static_assert (foo () == ^^V);\n+ consteval {\n+ static_assert (current_class () == ^^V);\n+ static_assert (foo () == ^^V);\n+ }\n+ }\n+ void baz ()\n+ {\n+ static_assert (current_class () == ^^V);\n+ static_assert (foo () == ^^V);\n+ static_assert (T {}.t == ^^V);\n+ static_assert (U {}.u == ^^U);\n+ }\n+};\n+\n+void\n+bar ()\n+{\n+ auto l = [] () {\n+ int v = 0;\n+ static_assert (current_class () == parent_of (parent_of (^^v)));\n+ static_assert (parent_of (current_class ()) == ^^bar);\n+ };\n+}\n--- gcc/testsuite/g++.dg/reflect/current_class2.C.jj\t2026-03-27 16:49:27.897688548 +0100\n+++ gcc/testsuite/g++.dg/reflect/current_class2.C\t2026-03-27 17:18:09.234250461 +0100\n@@ -0,0 +1,73 @@\n+// { dg-do compile { target c++26 } }\n+// { dg-additional-options \"-freflection\" }\n+// Test std::meta::current_class.\n+\n+#include <meta>\n+\n+using namespace std::meta;\n+\n+constexpr auto a = current_class ();\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+\n+consteval info\n+foo (info x = current_class ())\n+{\n+ return x;\n+}\n+\n+void\n+qux ()\n+{\n+ static constexpr auto a = current_class ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+}\n+\n+static_assert (foo (^^std) == ^^std);\n+constexpr auto b = foo ();\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+\n+namespace N\n+{\n+ struct S {};\n+ constexpr auto c = foo ();\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ namespace M\n+ {\n+ constexpr auto d = current_class ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ consteval {\n+ auto e = foo ();\n+ consteval {\n+\tauto f = current_class ();\n+ }\t\t\t\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ }\t\t\t\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ }\n+}\n+\n+struct T\n+{\n+ info t = current_class ();\n+};\n+\n+void\n+bar ()\n+{\n+ static constexpr auto g = current_class ();\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ static constexpr auto h = T{}.t;\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+ auto l2 = [] () -> int (&) [current_class () != ^^bar ? 2 : 3] {\t// { dg-error \"size of array is not an integral constant-expression\" }\n+ static int a[2];\n+ return a;\t\t\t\t\t// { dg-error \"invalid initialization of reference of type\" }\n+ };\n+}\n+\n+consteval {\n+ auto a = current_class ();\n+ consteval {\n+ auto b = foo ();\n+ }\t\t\t\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+}\t\t\t\t\t\t// { dg-error \"uncaught exception of type 'std::meta::exception'; 'what\\\\\\(\\\\\\)': 'current scope does not represent a class nor a member function'\" }\n+\n+namespace O\n+{\n+ int a[2];\n+ auto\n+ foo () -> int (&) [current_class () != ^^O ? 2 : 3]\t// { dg-error \"size of array is not an integral constant-expression\" }\n+ {\n+ return a;\t\t\t\t\t\t// { dg-error \"invalid initialization of reference of type\" }\n+ }\n+}\n--- gcc/testsuite/g++.dg/reflect/current_namespace1.C.jj\t2026-03-27 16:01:38.206095962 +0100\n+++ gcc/testsuite/g++.dg/reflect/current_namespace1.C\t2026-03-27 16:38:23.647675541 +0100\n@@ -0,0 +1,93 @@\n+// { dg-do compile { target c++26 } }\n+// { dg-additional-options \"-freflection\" }\n+// Test std::meta::current_namespace.\n+\n+#include <meta>\n+\n+using namespace std::meta;\n+\n+static_assert (current_namespace () == ^^::);\n+\n+consteval info\n+foo (info x = current_namespace ())\n+{\n+ static_assert (current_namespace () == ^^::);\n+ return x;\n+}\n+\n+static_assert (foo (^^std) == ^^std);\n+static_assert (foo () == ^^::);\n+\n+namespace N\n+{\n+ static_assert (foo () == ^^N);\n+ static_assert (current_namespace () == ^^N);\n+ namespace M\n+ {\n+ static_assert (foo () == ^^M);\n+ static_assert (current_namespace () == ^^M);\n+ consteval {\n+ static_assert (current_namespace () == ^^M);\n+ consteval {\n+\tstatic_assert (current_namespace () == ^^M);\n+ }\n+ }\n+ }\n+}\n+\n+struct T\n+{\n+ static_assert (current_namespace () == ^^::);\n+ static_assert (foo () == ^^::);\n+ info t = current_namespace ();\n+};\n+\n+namespace O\n+{\n+ struct T\n+ {\n+ static_assert (current_namespace () == ^^O);\n+ static_assert (foo () == ^^O);\n+ info t = current_namespace ();\n+ };\n+}\n+\n+void\n+bar ()\n+{\n+ static_assert (current_namespace () == ^^::);\n+ static_assert (T {}.t == ^^::);\n+ static_assert (O::T {}.t == ^^::);\n+ static_assert (foo (^^foo) == ^^foo);\n+ static_assert (foo () == ^^::);\n+}\n+\n+namespace P\n+{\n+ void\n+ bar ()\n+ {\n+ static_assert (current_namespace () == ^^P);\n+ static_assert (T {}.t == ^^P);\n+ static_assert (O::T {}.t == ^^P);\n+ static_assert (foo (^^foo) == ^^foo);\n+ static_assert (foo () == ^^P);\n+ }\n+}\n+\n+consteval {\n+ static_assert (current_namespace () == ^^::);\n+ consteval {\n+ static_assert (current_namespace () == ^^::);\n+ }\n+}\n+\n+namespace Q\n+{\n+ int a[2];\n+ auto\n+ foo () -> int (&) [current_namespace () == ^^Q ? 2 : 3]\n+ {\n+ return a;\n+ }\n+}\n--- libstdc++-v3/include/std/meta.jj\t2026-03-27 10:17:22.940187041 +0100\n+++ libstdc++-v3/include/std/meta\t2026-03-27 15:09:54.057090580 +0100\n@@ -342,6 +342,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n consteval bool has_inaccessible_bases(info, access_context);\n consteval bool has_inaccessible_subobjects(info, access_context);\n \n+ // [meta.reflection.scope], scope identification\n+ consteval info current_function();\n+ consteval info current_class();\n+ consteval info current_namespace();\n+\n // [meta.reflection.member.queries], reflection member queries\n consteval vector<info> members_of(info, access_context);\n consteval vector<info> bases_of(info, access_context);\n--- libstdc++-v3/src/c++23/std.cc.in.jj\t2026-03-27 10:17:22.970186552 +0100\n+++ libstdc++-v3/src/c++23/std.cc.in\t2026-03-27 15:11:02.064966469 +0100\n@@ -2195,6 +2195,9 @@ export namespace std\n using std::meta::has_inaccessible_nonstatic_data_members;\n using std::meta::has_inaccessible_bases;\n using std::meta::has_inaccessible_subobjects;\n+ using std::meta::current_function;\n+ using std::meta::current_class;\n+ using std::meta::current_namespace;\n using std::meta::members_of;\n using std::meta::bases_of;\n using std::meta::static_data_members_of;\n--- gcc/cp/metafns.h.jj\t2026-03-27 10:17:14.022332567 +0100\n+++ gcc/cp/metafns.h\t2026-03-30 23:55:47.453025966 +0200\n@@ -147,6 +147,9 @@ enum metafn_code {\n METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,\n METAFN_HAS_INACCESSIBLE_BASES,\n METAFN_HAS_INACCESSIBLE_SUBOBJECTS,\n+ METAFN_CURRENT_FUNCTION,\n+ METAFN_CURRENT_CLASS,\n+ METAFN_CURRENT_NAMESPACE,\n METAFN_MEMBERS_OF,\n METAFN_BASES_OF,\n METAFN_STATIC_DATA_MEMBERS_OF,\n@@ -391,6 +394,8 @@ enum metafn_kind {\n METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET\n = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT)\n | METAFN_KIND_RET_BOOL,\n+ METAFN_KIND_INFO_VOID\n+ = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,\n METAFN_KIND_INFO_INFO\n = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,\n METAFN_KIND_INFO_TINFO\n@@ -472,7 +477,7 @@ enum metafn_kind {\n = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)\n | METAFN_KIND_RET_U8STRING_VIEW\n };\n-#line 448 \"metafns.gperf\"\n+#line 453 \"metafns.gperf\"\n struct metafn_info\n {\n /* A name within \"std::meta::\" (or \"std::meta::access_context::\"). */\n@@ -484,7 +489,7 @@ struct metafn_info\n /* METAFN_KIND_ kind of arguments and return type. */\n metafn_kind kind;\n };\n-/* maximum key range = 879, duplicates = 0 */\n+/* maximum key range = 782, duplicates = 0 */\n \n class metafn_lookup\n {\n@@ -499,32 +504,32 @@ metafn_lookup::hash (const char *str, si\n {\n static const unsigned short asso_values[] =\n {\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 0, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 5, 100, 145, 10, 45,\n- 165, 5, 55, 50, 72, 20, 248, 0, 55, 105,\n- 0, 205, 0, 45, 35, 55, 25, 195, 5, 199,\n- 20, 311, 80, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,\n- 918, 918, 918, 918, 918, 918, 918\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 0, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 5, 45, 145, 10, 45,\n+ 190, 5, 55, 35, 115, 20, 346, 0, 60, 110,\n+ 0, 219, 0, 40, 35, 20, 25, 160, 5, 80,\n+ 0, 183, 45, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,\n+ 821, 821, 821, 821, 821, 821, 821\n };\n unsigned int hval = len;\n \n@@ -583,11 +588,11 @@ metafn_lookup::find (const char *str, si\n {\n enum\n {\n- TOTAL_KEYWORDS = 234,\n+ TOTAL_KEYWORDS = 237,\n MIN_WORD_LENGTH = 4,\n MAX_WORD_LENGTH = 40,\n MIN_HASH_VALUE = 39,\n- MAX_HASH_VALUE = 917\n+ MAX_HASH_VALUE = 820\n };\n \n #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)\n@@ -596,474 +601,480 @@ metafn_lookup::find (const char *str, si\n #endif\n static const struct metafn_info wordlist[] =\n {\n-#line 648 \"metafns.gperf\"\n+#line 656 \"metafns.gperf\"\n {\"rank\", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},\n-#line 578 \"metafns.gperf\"\n+#line 586 \"metafns.gperf\"\n {\"is_void_type\", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 583 \"metafns.gperf\"\n+#line 591 \"metafns.gperf\"\n {\"is_pointer_type\", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 489 \"metafns.gperf\"\n+#line 494 \"metafns.gperf\"\n {\"is_volatile\", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},\n-#line 535 \"metafns.gperf\"\n+#line 540 \"metafns.gperf\"\n {\"is_value\", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},\n-#line 542 \"metafns.gperf\"\n+#line 547 \"metafns.gperf\"\n {\"is_base\", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},\n-#line 503 \"metafns.gperf\"\n+#line 479 \"metafns.gperf\"\n+ {\"is_private\", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},\n+#line 508 \"metafns.gperf\"\n {\"is_variable\", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},\n-#line 654 \"metafns.gperf\"\n+#line 662 \"metafns.gperf\"\n {\"is_nothrow_convertible_type\", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 633 \"metafns.gperf\"\n+#line 641 \"metafns.gperf\"\n {\"is_nothrow_constructible_type\", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\n-#line 659 \"metafns.gperf\"\n+#line 667 \"metafns.gperf\"\n {\"is_nothrow_invocable_type\", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\n-#line 638 \"metafns.gperf\"\n+#line 646 \"metafns.gperf\"\n {\"is_nothrow_copy_assignable_type\", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 660 \"metafns.gperf\"\n+#line 668 \"metafns.gperf\"\n {\"is_nothrow_invocable_r_type\", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},\n-#line 635 \"metafns.gperf\"\n+#line 643 \"metafns.gperf\"\n {\"is_nothrow_copy_constructible_type\", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 651 \"metafns.gperf\"\n+#line 659 \"metafns.gperf\"\n {\"is_base_of_type\", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 639 \"metafns.gperf\"\n+#line 647 \"metafns.gperf\"\n {\"is_nothrow_move_assignable_type\", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 636 \"metafns.gperf\"\n+#line 658 \"metafns.gperf\"\n+ {\"is_same_type\", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 644 \"metafns.gperf\"\n {\"is_nothrow_move_constructible_type\", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 527 \"metafns.gperf\"\n+#line 532 \"metafns.gperf\"\n {\"is_variable_template\", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 579 \"metafns.gperf\"\n+#line 587 \"metafns.gperf\"\n {\"is_null_pointer_type\", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 472 \"metafns.gperf\"\n+#line 645 \"metafns.gperf\"\n+ {\"is_nothrow_assignable_type\", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 650 \"metafns.gperf\"\n+ {\"is_nothrow_destructible_type\", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 477 \"metafns.gperf\"\n {\"is_public\", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},\n-#line 484 \"metafns.gperf\"\n+#line 489 \"metafns.gperf\"\n {\"is_noexcept\", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},\n-#line 567 \"metafns.gperf\"\n+#line 575 \"metafns.gperf\"\n {\"extract\", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},\n-#line 687 \"metafns.gperf\"\n+#line 695 \"metafns.gperf\"\n {\"variant_alternative\", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},\n-#line 605 \"metafns.gperf\"\n+#line 613 \"metafns.gperf\"\n {\"is_polymorphic_type\", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 474 \"metafns.gperf\"\n- {\"is_private\", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},\n-#line 508 \"metafns.gperf\"\n+#line 513 \"metafns.gperf\"\n {\"is_function\", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},\n-#line 505 \"metafns.gperf\"\n+#line 510 \"metafns.gperf\"\n {\"is_namespace\", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},\n-#line 656 \"metafns.gperf\"\n+#line 466 \"metafns.gperf\"\n+ {\"symbol_of\", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},\n+#line 664 \"metafns.gperf\"\n {\"is_pointer_interconvertible_base_of_type\", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 612 \"metafns.gperf\"\n+#line 620 \"metafns.gperf\"\n {\"is_bounded_array_type\", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 488 \"metafns.gperf\"\n+#line 694 \"metafns.gperf\"\n+ {\"variant_size\", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},\n+#line 493 \"metafns.gperf\"\n {\"is_const\", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},\n-#line 534 \"metafns.gperf\"\n+#line 539 \"metafns.gperf\"\n {\"is_concept\", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},\n-#line 650 \"metafns.gperf\"\n- {\"is_same_type\", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 558 \"metafns.gperf\"\n+#line 509 \"metafns.gperf\"\n+ {\"is_type\", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},\n+#line 566 \"metafns.gperf\"\n {\"bases_of\", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n-#line 497 \"metafns.gperf\"\n- {\"has_module_linkage\", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},\n-#line 526 \"metafns.gperf\"\n+#line 531 \"metafns.gperf\"\n {\"is_function_template\", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 637 \"metafns.gperf\"\n- {\"is_nothrow_assignable_type\", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 509 \"metafns.gperf\"\n+#line 514 \"metafns.gperf\"\n {\"is_conversion_function\", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},\n-#line 642 \"metafns.gperf\"\n- {\"is_nothrow_destructible_type\", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 653 \"metafns.gperf\"\n+#line 628 \"metafns.gperf\"\n+ {\"is_copy_assignable_type\", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 661 \"metafns.gperf\"\n {\"is_convertible_type\", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 643 \"metafns.gperf\"\n+#line 651 \"metafns.gperf\"\n {\"is_implicit_lifetime_type\", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 525 \"metafns.gperf\"\n+#line 696 \"metafns.gperf\"\n+ {\"type_order\", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},\n+#line 530 \"metafns.gperf\"\n {\"is_template\", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 634 \"metafns.gperf\"\n+#line 642 \"metafns.gperf\"\n {\"is_nothrow_default_constructible_type\", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 568 \"metafns.gperf\"\n+#line 576 \"metafns.gperf\"\n {\"can_substitute\", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},\n-#line 530 \"metafns.gperf\"\n+#line 535 \"metafns.gperf\"\n {\"is_conversion_function_template\", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 461 \"metafns.gperf\"\n- {\"symbol_of\", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},\n-#line 617 \"metafns.gperf\"\n+#line 523 \"metafns.gperf\"\n+ {\"is_copy_assignment\", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n+#line 625 \"metafns.gperf\"\n {\"is_copy_constructible_type\", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 686 \"metafns.gperf\"\n- {\"variant_size\", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},\n-#line 504 \"metafns.gperf\"\n- {\"is_type\", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},\n-#line 615 \"metafns.gperf\"\n+#line 572 \"metafns.gperf\"\n+ {\"size_of\", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},\n+#line 474 \"metafns.gperf\"\n+ {\"type_of\", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},\n+#line 511 \"metafns.gperf\"\n+ {\"is_type_alias\", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},\n+#line 623 \"metafns.gperf\"\n {\"is_constructible_type\", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\n-#line 495 \"metafns.gperf\"\n- {\"has_automatic_storage_duration\", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n-#line 620 \"metafns.gperf\"\n- {\"is_copy_assignable_type\", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 684 \"metafns.gperf\"\n- {\"tuple_size\", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},\n-#line 524 \"metafns.gperf\"\n+#line 631 \"metafns.gperf\"\n+ {\"is_swappable_type\", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 502 \"metafns.gperf\"\n+ {\"has_module_linkage\", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},\n+#line 529 \"metafns.gperf\"\n {\"is_vararg_function\", METAFN_IS_VARARG_FUNCTION, METAFN_KIND_BOOL_INFO,},\n-#line 515 \"metafns.gperf\"\n+#line 520 \"metafns.gperf\"\n {\"is_copy_constructor\", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n-#line 551 \"metafns.gperf\"\n+#line 692 \"metafns.gperf\"\n+ {\"tuple_size\", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},\n+#line 556 \"metafns.gperf\"\n {\"variable_of\", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},\n-#line 544 \"metafns.gperf\"\n- {\"has_parent\", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},\n-#line 592 \"metafns.gperf\"\n+#line 600 \"metafns.gperf\"\n {\"is_reflection_type\", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 595 \"metafns.gperf\"\n+#line 574 \"metafns.gperf\"\n+ {\"bit_size_of\", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},\n+#line 603 \"metafns.gperf\"\n {\"is_fundamental_type\", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 655 \"metafns.gperf\"\n+#line 663 \"metafns.gperf\"\n {\"is_layout_compatible_type\", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 566 \"metafns.gperf\"\n- {\"bit_size_of\", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},\n-#line 518 \"metafns.gperf\"\n- {\"is_copy_assignment\", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n-#line 691 \"metafns.gperf\"\n+#line 699 \"metafns.gperf\"\n {\"current\", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},\n-#line 678 \"metafns.gperf\"\n- {\"common_type\", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},\n-#line 533 \"metafns.gperf\"\n+#line 562 \"metafns.gperf\"\n+ {\"current_function\", METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,},\n+#line 538 \"metafns.gperf\"\n {\"is_constructor_template\", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 688 \"metafns.gperf\"\n- {\"type_order\", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},\n-#line 679 \"metafns.gperf\"\n+#line 686 \"metafns.gperf\"\n+ {\"common_type\", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},\n+#line 629 \"metafns.gperf\"\n+ {\"is_move_assignable_type\", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 687 \"metafns.gperf\"\n {\"common_reference\", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},\n-#line 543 \"metafns.gperf\"\n- {\"has_default_member_initializer\", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},\n-#line 685 \"metafns.gperf\"\n+#line 693 \"metafns.gperf\"\n {\"tuple_element\", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},\n-#line 572 \"metafns.gperf\"\n+#line 580 \"metafns.gperf\"\n {\"reflect_function\", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},\n-#line 523 \"metafns.gperf\"\n- {\"has_default_argument\", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},\n-#line 618 \"metafns.gperf\"\n- {\"is_move_constructible_type\", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 469 \"metafns.gperf\"\n- {\"type_of\", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},\n-#line 513 \"metafns.gperf\"\n+#line 500 \"metafns.gperf\"\n+ {\"has_automatic_storage_duration\", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n+#line 524 \"metafns.gperf\"\n+ {\"is_move_assignment\", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n+#line 518 \"metafns.gperf\"\n {\"is_constructor\", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n-#line 623 \"metafns.gperf\"\n- {\"is_swappable_type\", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 641 \"metafns.gperf\"\n+#line 549 \"metafns.gperf\"\n+ {\"has_parent\", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},\n+#line 626 \"metafns.gperf\"\n+ {\"is_move_constructible_type\", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 649 \"metafns.gperf\"\n {\"is_nothrow_swappable_type\", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 593 \"metafns.gperf\"\n+#line 610 \"metafns.gperf\"\n+ {\"is_trivially_copyable_type\", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 601 \"metafns.gperf\"\n {\"is_reference_type\", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 500 \"metafns.gperf\"\n- {\"has_linkage\", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},\n-#line 640 \"metafns.gperf\"\n+#line 593 \"metafns.gperf\"\n+ {\"is_rvalue_reference_type\", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 648 \"metafns.gperf\"\n {\"is_nothrow_swappable_with_type\", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 599 \"metafns.gperf\"\n- {\"is_member_pointer_type\", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 621 \"metafns.gperf\"\n- {\"is_move_assignable_type\", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 506 \"metafns.gperf\"\n- {\"is_type_alias\", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},\n-#line 516 \"metafns.gperf\"\n- {\"is_move_constructor\", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n-#line 550 \"metafns.gperf\"\n- {\"parameters_of\", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n-#line 564 \"metafns.gperf\"\n- {\"size_of\", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},\n-#line 519 \"metafns.gperf\"\n- {\"is_move_assignment\", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n-#line 619 \"metafns.gperf\"\n- {\"is_assignable_type\", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 538 \"metafns.gperf\"\n- {\"is_class_member\", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},\n-#line 602 \"metafns.gperf\"\n- {\"is_trivially_copyable_type\", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 517 \"metafns.gperf\"\n- {\"is_assignment\", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n-#line 539 \"metafns.gperf\"\n- {\"is_namespace_member\", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},\n-#line 557 \"metafns.gperf\"\n- {\"members_of\", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n-#line 625 \"metafns.gperf\"\n+#line 633 \"metafns.gperf\"\n {\"is_trivially_constructible_type\", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\n #line 630 \"metafns.gperf\"\n+ {\"is_swappable_with_type\", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 638 \"metafns.gperf\"\n {\"is_trivially_copy_assignable_type\", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 627 \"metafns.gperf\"\n+#line 688 \"metafns.gperf\"\n+ {\"underlying_type\", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},\n+#line 635 \"metafns.gperf\"\n {\"is_trivially_copy_constructible_type\", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 649 \"metafns.gperf\"\n- {\"extent\", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},\n-#line 588 \"metafns.gperf\"\n- {\"is_enum_type\", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 607 \"metafns.gperf\"\n+ {\"is_member_pointer_type\", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 577 \"metafns.gperf\"\n+ {\"substitute\", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},\n+#line 555 \"metafns.gperf\"\n+ {\"parameters_of\", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n+#line 521 \"metafns.gperf\"\n+ {\"is_move_constructor\", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n #line 548 \"metafns.gperf\"\n- {\"template_of\", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},\n-#line 528 \"metafns.gperf\"\n- {\"is_class_template\", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 512 \"metafns.gperf\"\n+ {\"has_default_member_initializer\", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},\n+#line 517 \"metafns.gperf\"\n {\"is_special_member_function\", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},\n-#line 473 \"metafns.gperf\"\n- {\"is_protected\", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},\n-#line 540 \"metafns.gperf\"\n- {\"is_nonstatic_data_member\", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},\n-#line 682 \"metafns.gperf\"\n+#line 612 \"metafns.gperf\"\n+ {\"is_empty_type\", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 627 \"metafns.gperf\"\n+ {\"is_assignable_type\", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 592 \"metafns.gperf\"\n+ {\"is_lvalue_reference_type\", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 528 \"metafns.gperf\"\n+ {\"has_default_argument\", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},\n+#line 690 \"metafns.gperf\"\n {\"unwrap_reference\", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},\n-#line 502 \"metafns.gperf\"\n- {\"is_enumerable_type\", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},\n-#line 594 \"metafns.gperf\"\n+#line 522 \"metafns.gperf\"\n+ {\"is_assignment\", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},\n+#line 609 \"metafns.gperf\"\n+ {\"is_volatile_type\", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 543 \"metafns.gperf\"\n+ {\"is_class_member\", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},\n+#line 602 \"metafns.gperf\"\n {\"is_arithmetic_type\", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 545 \"metafns.gperf\"\n- {\"parent_of\", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},\n-#line 476 \"metafns.gperf\"\n- {\"is_pure_virtual\", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},\n-#line 675 \"metafns.gperf\"\n- {\"add_pointer\", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},\n-#line 616 \"metafns.gperf\"\n- {\"is_default_constructible_type\", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 680 \"metafns.gperf\"\n- {\"underlying_type\", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},\n-#line 521 \"metafns.gperf\"\n- {\"is_function_parameter\", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},\n-#line 464 \"metafns.gperf\"\n+#line 544 \"metafns.gperf\"\n+ {\"is_namespace_member\", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},\n+#line 565 \"metafns.gperf\"\n+ {\"members_of\", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n+#line 478 \"metafns.gperf\"\n+ {\"is_protected\", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},\n+#line 505 \"metafns.gperf\"\n+ {\"has_linkage\", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},\n+#line 469 \"metafns.gperf\"\n {\"identifier_of\", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},\n-#line 597 \"metafns.gperf\"\n- {\"is_scalar_type\", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 669 \"metafns.gperf\"\n+#line 677 \"metafns.gperf\"\n {\"add_rvalue_reference\", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},\n-#line 490 \"metafns.gperf\"\n- {\"is_mutable_member\", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},\n-#line 507 \"metafns.gperf\"\n+#line 553 \"metafns.gperf\"\n+ {\"template_of\", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},\n+#line 512 \"metafns.gperf\"\n {\"is_namespace_alias\", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},\n-#line 631 \"metafns.gperf\"\n+#line 657 \"metafns.gperf\"\n+ {\"extent\", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},\n+#line 596 \"metafns.gperf\"\n+ {\"is_enum_type\", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 533 \"metafns.gperf\"\n+ {\"is_class_template\", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n+#line 608 \"metafns.gperf\"\n+ {\"is_const_type\", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 564 \"metafns.gperf\"\n+ {\"current_namespace\", METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,},\n+#line 488 \"metafns.gperf\"\n+ {\"is_explicit\", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},\n+#line 683 \"metafns.gperf\"\n+ {\"add_pointer\", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},\n+#line 639 \"metafns.gperf\"\n {\"is_trivially_move_assignable_type\", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 628 \"metafns.gperf\"\n+#line 506 \"metafns.gperf\"\n+ {\"is_complete_type\", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},\n+#line 636 \"metafns.gperf\"\n {\"is_trivially_move_constructible_type\", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 514 \"metafns.gperf\"\n- {\"is_default_constructor\", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n-#line 486 \"metafns.gperf\"\n+#line 605 \"metafns.gperf\"\n+ {\"is_scalar_type\", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 481 \"metafns.gperf\"\n+ {\"is_pure_virtual\", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},\n+#line 526 \"metafns.gperf\"\n+ {\"is_function_parameter\", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},\n+#line 507 \"metafns.gperf\"\n+ {\"is_enumerable_type\", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},\n+#line 599 \"metafns.gperf\"\n+ {\"is_function_type\", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 550 \"metafns.gperf\"\n+ {\"parent_of\", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},\n+#line 545 \"metafns.gperf\"\n+ {\"is_nonstatic_data_member\", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},\n+#line 542 \"metafns.gperf\"\n+ {\"is_structured_binding\", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},\n+#line 495 \"metafns.gperf\"\n+ {\"is_mutable_member\", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},\n+#line 637 \"metafns.gperf\"\n+ {\"is_trivially_assignable_type\", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 624 \"metafns.gperf\"\n+ {\"is_default_constructible_type\", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 527 \"metafns.gperf\"\n+ {\"is_explicit_object_parameter\", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},\n+#line 673 \"metafns.gperf\"\n+ {\"add_volatile\", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},\n+#line 563 \"metafns.gperf\"\n+ {\"current_class\", METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,},\n+#line 570 \"metafns.gperf\"\n+ {\"enumerators_of\", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n+#line 491 \"metafns.gperf\"\n {\"is_enumerator\", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},\n-#line 536 \"metafns.gperf\"\n+#line 541 \"metafns.gperf\"\n {\"is_object\", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},\n-#line 608 \"metafns.gperf\"\n- {\"is_aggregate_type\", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 520 \"metafns.gperf\"\n- {\"is_destructor\", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},\n-#line 587 \"metafns.gperf\"\n+#line 472 \"metafns.gperf\"\n+ {\"u8display_string_of\", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},\n+#line 595 \"metafns.gperf\"\n {\"is_member_function_pointer_type\", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 596 \"metafns.gperf\"\n+#line 652 \"metafns.gperf\"\n+ {\"has_virtual_destructor\", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},\n+#line 655 \"metafns.gperf\"\n+ {\"reference_converts_from_temporary\", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 519 \"metafns.gperf\"\n+ {\"is_default_constructor\", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\n+#line 604 \"metafns.gperf\"\n {\"is_object_type\", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 569 \"metafns.gperf\"\n- {\"substitute\", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},\n-#line 585 \"metafns.gperf\"\n- {\"is_rvalue_reference_type\", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 666 \"metafns.gperf\"\n- {\"add_cv\", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},\n-#line 570 \"metafns.gperf\"\n+#line 578 \"metafns.gperf\"\n {\"reflect_constant\", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},\n-#line 629 \"metafns.gperf\"\n- {\"is_trivially_assignable_type\", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 475 \"metafns.gperf\"\n- {\"is_virtual\", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},\n-#line 493 \"metafns.gperf\"\n- {\"has_static_storage_duration\", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n-#line 668 \"metafns.gperf\"\n+#line 525 \"metafns.gperf\"\n+ {\"is_destructor\", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},\n+#line 482 \"metafns.gperf\"\n+ {\"is_override\", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},\n+#line 654 \"metafns.gperf\"\n+ {\"reference_constructs_from_temporary\", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},\n+#line 557 \"metafns.gperf\"\n+ {\"return_type_of\", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},\n+#line 676 \"metafns.gperf\"\n {\"add_lvalue_reference\", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},\n-#line 584 \"metafns.gperf\"\n- {\"is_lvalue_reference_type\", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 562 \"metafns.gperf\"\n- {\"enumerators_of\", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n-#line 624 \"metafns.gperf\"\n- {\"is_destructible_type\", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 549 \"metafns.gperf\"\n+#line 476 \"metafns.gperf\"\n+ {\"constant_of\", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},\n+#line 671 \"metafns.gperf\"\n+ {\"remove_cv\", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},\n+#line 640 \"metafns.gperf\"\n+ {\"is_trivially_destructible_type\", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 674 \"metafns.gperf\"\n+ {\"add_cv\", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},\n+#line 616 \"metafns.gperf\"\n+ {\"is_aggregate_type\", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 581 \"metafns.gperf\"\n+ {\"reflect_constant_string\", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},\n+#line 554 \"metafns.gperf\"\n {\"template_arguments_of\", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n-#line 657 \"metafns.gperf\"\n+#line 569 \"metafns.gperf\"\n+ {\"subobjects_of\", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n+#line 571 \"metafns.gperf\"\n+ {\"offset_of\", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},\n+#line 634 \"metafns.gperf\"\n+ {\"is_trivially_default_constructible_type\", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 675 \"metafns.gperf\"\n+ {\"remove_reference\", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},\n+#line 534 \"metafns.gperf\"\n+ {\"is_alias_template\", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n+#line 679 \"metafns.gperf\"\n+ {\"make_unsigned\", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},\n+#line 665 \"metafns.gperf\"\n {\"is_invocable_type\", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\n-#line 664 \"metafns.gperf\"\n+#line 622 \"metafns.gperf\"\n+ {\"is_scoped_enum_type\", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 546 \"metafns.gperf\"\n+ {\"is_static_member\", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},\n+#line 672 \"metafns.gperf\"\n {\"add_const\", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},\n-#line 529 \"metafns.gperf\"\n- {\"is_alias_template\", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 604 \"metafns.gperf\"\n- {\"is_empty_type\", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},\n #line 632 \"metafns.gperf\"\n- {\"is_trivially_destructible_type\", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+ {\"is_destructible_type\", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 598 \"metafns.gperf\"\n+ {\"is_class_type\", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 680 \"metafns.gperf\"\n+ {\"remove_extent\", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},\n+#line 666 \"metafns.gperf\"\n+ {\"is_invocable_r_type\", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},\n+#line 558 \"metafns.gperf\"\n+ {\"is_accessible\", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n+#line 465 \"metafns.gperf\"\n+ {\"operator_of\", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},\n+#line 590 \"metafns.gperf\"\n+ {\"is_array_type\", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 669 \"metafns.gperf\"\n+ {\"remove_const\", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},\n+#line 497 \"metafns.gperf\"\n+ {\"is_rvalue_reference_qualified\", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},\n #line 498 \"metafns.gperf\"\n+ {\"has_static_storage_duration\", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n+#line 681 \"metafns.gperf\"\n+ {\"remove_all_extents\", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},\n+#line 503 \"metafns.gperf\"\n {\"has_external_linkage\", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},\n-#line 553 \"metafns.gperf\"\n- {\"is_accessible\", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n-#line 658 \"metafns.gperf\"\n- {\"is_invocable_r_type\", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},\n-#line 652 \"metafns.gperf\"\n+#line 684 \"metafns.gperf\"\n+ {\"remove_cvref\", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},\n+#line 492 \"metafns.gperf\"\n+ {\"is_annotation\", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},\n+#line 682 \"metafns.gperf\"\n+ {\"remove_pointer\", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},\n+#line 496 \"metafns.gperf\"\n+ {\"is_lvalue_reference_qualified\", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},\n+#line 660 \"metafns.gperf\"\n {\"is_virtual_base_of_type\", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 601 \"metafns.gperf\"\n- {\"is_volatile_type\", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 573 \"metafns.gperf\"\n- {\"reflect_constant_string\", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},\n-#line 626 \"metafns.gperf\"\n- {\"is_trivially_default_constructible_type\", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 532 \"metafns.gperf\"\n- {\"is_literal_operator_template\", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 460 \"metafns.gperf\"\n- {\"operator_of\", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},\n-#line 610 \"metafns.gperf\"\n+#line 584 \"metafns.gperf\"\n+ {\"is_data_member_spec\", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},\n+#line 618 \"metafns.gperf\"\n {\"is_signed_type\", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},\n #line 614 \"metafns.gperf\"\n- {\"is_scoped_enum_type\", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 622 \"metafns.gperf\"\n- {\"is_swappable_with_type\", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 561 \"metafns.gperf\"\n- {\"subobjects_of\", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n-#line 563 \"metafns.gperf\"\n- {\"offset_of\", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},\n-#line 537 \"metafns.gperf\"\n- {\"is_structured_binding\", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},\n-#line 478 \"metafns.gperf\"\n- {\"is_final\", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},\n-#line 511 \"metafns.gperf\"\n- {\"is_literal_operator\", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},\n-#line 671 \"metafns.gperf\"\n- {\"make_unsigned\", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},\n-#line 467 \"metafns.gperf\"\n- {\"u8display_string_of\", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},\n-#line 644 \"metafns.gperf\"\n- {\"has_virtual_destructor\", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},\n-#line 600 \"metafns.gperf\"\n- {\"is_const_type\", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 483 \"metafns.gperf\"\n- {\"is_explicit\", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},\n-#line 576 \"metafns.gperf\"\n- {\"is_data_member_spec\", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},\n-#line 501 \"metafns.gperf\"\n- {\"is_complete_type\", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},\n-#line 487 \"metafns.gperf\"\n- {\"is_annotation\", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},\n-#line 591 \"metafns.gperf\"\n- {\"is_function_type\", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 552 \"metafns.gperf\"\n- {\"return_type_of\", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},\n-#line 479 \"metafns.gperf\"\n- {\"is_deleted\", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},\n-#line 471 \"metafns.gperf\"\n- {\"constant_of\", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},\n-#line 665 \"metafns.gperf\"\n- {\"add_volatile\", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},\n+ {\"is_abstract_type\", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},\n #line 480 \"metafns.gperf\"\n- {\"is_defaulted\", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},\n-#line 645 \"metafns.gperf\"\n- {\"has_unique_object_representations\", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},\n-#line 586 \"metafns.gperf\"\n- {\"is_member_object_pointer_type\", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 466 \"metafns.gperf\"\n+ {\"is_virtual\", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},\n+#line 471 \"metafns.gperf\"\n {\"display_string_of\", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},\n-#line 522 \"metafns.gperf\"\n- {\"is_explicit_object_parameter\", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},\n-#line 541 \"metafns.gperf\"\n- {\"is_static_member\", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},\n-#line 470 \"metafns.gperf\"\n- {\"object_of\", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},\n-#line 609 \"metafns.gperf\"\n+#line 594 \"metafns.gperf\"\n+ {\"is_member_object_pointer_type\", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 691 \"metafns.gperf\"\n+ {\"unwrap_ref_decay\", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},\n+#line 617 \"metafns.gperf\"\n {\"is_consteval_only_type\", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 477 \"metafns.gperf\"\n- {\"is_override\", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},\n-#line 663 \"metafns.gperf\"\n- {\"remove_cv\", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},\n-#line 571 \"metafns.gperf\"\n- {\"reflect_object\", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},\n-#line 581 \"metafns.gperf\"\n+#line 606 \"metafns.gperf\"\n+ {\"is_compound_type\", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 467 \"metafns.gperf\"\n+ {\"u8symbol_of\", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},\n+#line 484 \"metafns.gperf\"\n+ {\"is_deleted\", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},\n+#line 589 \"metafns.gperf\"\n {\"is_floating_point_type\", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 463 \"metafns.gperf\"\n- {\"has_identifier\", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},\n-#line 667 \"metafns.gperf\"\n- {\"remove_reference\", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},\n-#line 555 \"metafns.gperf\"\n- {\"has_inaccessible_bases\", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n-#line 499 \"metafns.gperf\"\n- {\"has_c_language_linkage\", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},\n-#line 556 \"metafns.gperf\"\n- {\"has_inaccessible_subobjects\", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n-#line 672 \"metafns.gperf\"\n- {\"remove_extent\", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},\n-#line 554 \"metafns.gperf\"\n- {\"has_inaccessible_nonstatic_data_members\", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n-#line 492 \"metafns.gperf\"\n- {\"is_rvalue_reference_qualified\", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},\n-#line 647 \"metafns.gperf\"\n- {\"reference_converts_from_temporary\", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 590 \"metafns.gperf\"\n- {\"is_class_type\", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 482 \"metafns.gperf\"\n- {\"is_user_declared\", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},\n-#line 575 \"metafns.gperf\"\n- {\"data_member_spec\", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},\n-#line 491 \"metafns.gperf\"\n- {\"is_lvalue_reference_qualified\", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},\n-#line 494 \"metafns.gperf\"\n- {\"has_thread_storage_duration\", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n+#line 537 \"metafns.gperf\"\n+ {\"is_literal_operator_template\", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n #line 485 \"metafns.gperf\"\n- {\"is_bit_field\", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},\n-#line 676 \"metafns.gperf\"\n- {\"remove_cvref\", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},\n-#line 681 \"metafns.gperf\"\n- {\"invoke_result\", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},\n-#line 547 \"metafns.gperf\"\n+ {\"is_defaulted\", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},\n+#line 583 \"metafns.gperf\"\n+ {\"data_member_spec\", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},\n+#line 475 \"metafns.gperf\"\n+ {\"object_of\", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},\n+#line 700 \"metafns.gperf\"\n+ {\"_S_exception_cvt_to_utf8\", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},\n+#line 701 \"metafns.gperf\"\n+ {\"_S_exception_cvt_from_utf8\", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},\n+#line 483 \"metafns.gperf\"\n+ {\"is_final\", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},\n+#line 516 \"metafns.gperf\"\n+ {\"is_literal_operator\", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},\n+#line 487 \"metafns.gperf\"\n+ {\"is_user_declared\", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},\n+#line 552 \"metafns.gperf\"\n {\"has_template_arguments\", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},\n-#line 510 \"metafns.gperf\"\n+#line 515 \"metafns.gperf\"\n {\"is_operator_function\", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},\n-#line 674 \"metafns.gperf\"\n- {\"remove_pointer\", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},\n-#line 546 \"metafns.gperf\"\n- {\"dealias\", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},\n-#line 661 \"metafns.gperf\"\n- {\"remove_const\", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},\n-#line 531 \"metafns.gperf\"\n- {\"is_operator_function_template\", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n-#line 646 \"metafns.gperf\"\n- {\"reference_constructs_from_temporary\", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},\n-#line 673 \"metafns.gperf\"\n- {\"remove_all_extents\", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},\n+#line 689 \"metafns.gperf\"\n+ {\"invoke_result\", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},\n #line 582 \"metafns.gperf\"\n- {\"is_array_type\", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 496 \"metafns.gperf\"\n- {\"has_internal_linkage\", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},\n-#line 670 \"metafns.gperf\"\n- {\"make_signed\", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},\n-#line 559 \"metafns.gperf\"\n- {\"static_data_members_of\", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n-#line 598 \"metafns.gperf\"\n- {\"is_compound_type\", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 606 \"metafns.gperf\"\n- {\"is_abstract_type\", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 577 \"metafns.gperf\"\n- {\"define_aggregate\", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},\n-#line 692 \"metafns.gperf\"\n- {\"_S_exception_cvt_to_utf8\", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},\n-#line 693 \"metafns.gperf\"\n- {\"_S_exception_cvt_from_utf8\", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},\n-#line 613 \"metafns.gperf\"\n- {\"is_unbounded_array_type\", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 603 \"metafns.gperf\"\n- {\"is_standard_layout_type\", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 683 \"metafns.gperf\"\n- {\"unwrap_ref_decay\", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},\n-#line 574 \"metafns.gperf\"\n {\"reflect_constant_array\", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},\n-#line 462 \"metafns.gperf\"\n- {\"u8symbol_of\", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},\n-#line 580 \"metafns.gperf\"\n+#line 504 \"metafns.gperf\"\n+ {\"has_c_language_linkage\", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},\n+#line 536 \"metafns.gperf\"\n+ {\"is_operator_function_template\", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},\n+#line 588 \"metafns.gperf\"\n {\"is_integral_type\", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 653 \"metafns.gperf\"\n+ {\"has_unique_object_representations\", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},\n+#line 499 \"metafns.gperf\"\n+ {\"has_thread_storage_duration\", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n #line 560 \"metafns.gperf\"\n- {\"nonstatic_data_members_of\", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n-#line 607 \"metafns.gperf\"\n- {\"is_final_type\", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 662 \"metafns.gperf\"\n+ {\"has_inaccessible_bases\", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n+#line 561 \"metafns.gperf\"\n+ {\"has_inaccessible_subobjects\", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n+#line 678 \"metafns.gperf\"\n+ {\"make_signed\", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},\n+#line 559 \"metafns.gperf\"\n+ {\"has_inaccessible_nonstatic_data_members\", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},\n+#line 670 \"metafns.gperf\"\n {\"remove_volatile\", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},\n-#line 565 \"metafns.gperf\"\n- {\"alignment_of\", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},\n+#line 579 \"metafns.gperf\"\n+ {\"reflect_object\", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},\n+#line 611 \"metafns.gperf\"\n+ {\"is_standard_layout_type\", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 685 \"metafns.gperf\"\n+ {\"decay\", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},\n+#line 621 \"metafns.gperf\"\n+ {\"is_unbounded_array_type\", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 568 \"metafns.gperf\"\n+ {\"nonstatic_data_members_of\", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n+#line 597 \"metafns.gperf\"\n+ {\"is_union_type\", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},\n #line 468 \"metafns.gperf\"\n- {\"source_location_of\", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},\n-#line 690 \"metafns.gperf\"\n+ {\"has_identifier\", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},\n+#line 567 \"metafns.gperf\"\n+ {\"static_data_members_of\", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},\n+#line 615 \"metafns.gperf\"\n+ {\"is_final_type\", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 551 \"metafns.gperf\"\n+ {\"dealias\", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},\n+#line 698 \"metafns.gperf\"\n {\"annotations_of_with_type\", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},\n-#line 465 \"metafns.gperf\"\n- {\"u8identifier_of\", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},\n-#line 677 \"metafns.gperf\"\n- {\"decay\", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},\n-#line 689 \"metafns.gperf\"\n+#line 585 \"metafns.gperf\"\n+ {\"define_aggregate\", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},\n+#line 490 \"metafns.gperf\"\n+ {\"is_bit_field\", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},\n+#line 697 \"metafns.gperf\"\n {\"annotations_of\", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},\n-#line 589 \"metafns.gperf\"\n- {\"is_union_type\", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 481 \"metafns.gperf\"\n- {\"is_user_provided\", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},\n-#line 611 \"metafns.gperf\"\n- {\"is_unsigned_type\", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,}\n+#line 473 \"metafns.gperf\"\n+ {\"source_location_of\", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},\n+#line 573 \"metafns.gperf\"\n+ {\"alignment_of\", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},\n+#line 501 \"metafns.gperf\"\n+ {\"has_internal_linkage\", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},\n+#line 470 \"metafns.gperf\"\n+ {\"u8identifier_of\", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},\n+#line 619 \"metafns.gperf\"\n+ {\"is_unsigned_type\", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},\n+#line 486 \"metafns.gperf\"\n+ {\"is_user_provided\", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}\n };\n #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)\n #pragma GCC diagnostic pop\n@@ -1076,81 +1087,71 @@ metafn_lookup::find (const char *str, si\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,\n -1, -1, 1, -1, -1, 2, 3, -1, 4, -1,\n- -1, -1, 5, -1, -1, -1, 6, 7, -1, 8,\n- 9, 10, 11, -1, 12, 13, 14, -1, -1, 15,\n- 16, -1, -1, -1, -1, 17, -1, -1, -1, 18,\n- -1, 19, 20, -1, 21, -1, -1, -1, -1, 22,\n- 23, 24, 25, -1, -1, 26, 27, -1, 28, -1,\n- 29, -1, 30, 31, -1, 32, -1, -1, -1, -1,\n- 33, 34, 35, 36, 37, 38, -1, -1, -1, -1,\n- -1, 39, 40, -1, 41, -1, 42, -1, -1, 43,\n- -1, 44, 45, -1, -1, -1, -1, 46, -1, -1,\n- -1, -1, -1, -1, -1, -1, 47, 48, 49, -1,\n- 50, -1, -1, 51, 52, -1, 53, 54, 55, 56,\n- 57, 58, -1, 59, -1, -1, -1, 60, -1, -1,\n- -1, 61, -1, 62, -1, 63, 64, 65, 66, -1,\n- -1, 67, -1, -1, -1, -1, -1, 68, -1, -1,\n- -1, 69, 70, -1, 71, -1, -1, 72, -1, -1,\n- 73, -1, 74, 75, -1, 76, -1, 77, 78, -1,\n- -1, -1, -1, 79, 80, -1, -1, -1, 81, -1,\n- -1, -1, 82, 83, -1, -1, -1, -1, 84, -1,\n- 85, 86, -1, 87, 88, 89, 90, -1, 91, -1,\n- -1, 92, -1, -1, -1, -1, 93, 94, -1, -1,\n- -1, 95, 96, -1, -1, -1, 97, 98, -1, -1,\n- -1, -1, -1, -1, 99, -1, 100, -1, 101, -1,\n- -1, -1, -1, 102, 103, 104, 105, -1, -1, 106,\n- 107, 108, -1, -1, -1, -1, -1, -1, 109, 110,\n- 111, -1, 112, 113, -1, -1, -1, -1, 114, -1,\n- -1, 115, 116, 117, 118, -1, -1, -1, -1, 119,\n- -1, -1, -1, 120, -1, -1, 121, -1, -1, 122,\n- 123, -1, -1, 124, -1, -1, 125, -1, -1, -1,\n- -1, 126, -1, 127, -1, -1, -1, -1, 128, 129,\n- 130, -1, -1, 131, 132, 133, 134, 135, -1, 136,\n- -1, -1, 137, -1, 138, 139, -1, 140, 141, 142,\n- -1, 143, 144, 145, 146, -1, 147, -1, -1, -1,\n- -1, 148, 149, -1, 150, -1, 151, -1, 152, 153,\n- -1, 154, -1, -1, -1, -1, 155, 156, 157, 158,\n- -1, -1, -1, 159, 160, -1, -1, 161, -1, 162,\n- -1, -1, 163, 164, -1, -1, -1, -1, -1, -1,\n- -1, -1, 165, -1, 166, 167, 168, -1, -1, -1,\n- -1, 169, 170, 171, 172, -1, -1, 173, -1, -1,\n- -1, -1, -1, -1, 174, -1, 175, -1, -1, 176,\n- -1, -1, 177, -1, -1, 178, -1, -1, -1, -1,\n- -1, -1, -1, 179, -1, -1, -1, 180, -1, -1,\n- -1, -1, 181, -1, 182, 183, -1, 184, -1, 185,\n- -1, -1, 186, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, 187, -1, 188, -1, -1, -1, 189, 190,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, 191,\n- -1, 192, -1, -1, -1, -1, 193, -1, 194, 195,\n- 196, 197, -1, 198, -1, -1, -1, -1, -1, 199,\n- 200, -1, -1, 201, -1, -1, -1, -1, -1, -1,\n- 202, 203, -1, -1, 204, -1, -1, -1, -1, -1,\n- -1, 205, 206, -1, -1, -1, -1, -1, -1, 207,\n- 208, 209, -1, -1, -1, 210, -1, -1, -1, -1,\n- -1, -1, 211, -1, -1, -1, -1, 212, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, 213, -1, -1, -1, 214, -1, 215, 216, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, 217, -1,\n- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,\n- -1, -1, -1, 219, -1, -1, -1, 220, -1, -1,\n- -1, -1, 221, -1, -1, -1, -1, -1, -1, -1,\n- 222, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, 223, -1, -1, -1, -1, -1, -1, 224,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, 225, -1, -1, -1, -1, -1, 226, -1,\n- -1, -1, -1, -1, 227, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, 228, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, 229, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, 231,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, 232, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, 5, -1, -1, 6, 7, 8, -1, 9,\n+ 10, 11, 12, -1, 13, 14, 15, 16, -1, 17,\n+ 18, -1, -1, -1, -1, 19, 20, -1, 21, 22,\n+ -1, 23, 24, -1, 25, -1, -1, -1, -1, 26,\n+ -1, 27, 28, -1, 29, 30, 31, 32, 33, -1,\n+ 34, -1, 35, 36, -1, -1, -1, -1, -1, -1,\n+ 37, -1, 38, 39, 40, 41, -1, -1, -1, -1,\n+ 42, 43, 44, -1, 45, -1, 46, -1, 47, -1,\n+ -1, 48, 49, -1, -1, -1, -1, 50, -1, -1,\n+ -1, -1, -1, 51, -1, -1, 52, 53, 54, -1,\n+ -1, -1, -1, 55, 56, 57, 58, -1, 59, -1,\n+ -1, 60, -1, -1, 61, 62, -1, 63, -1, -1,\n+ -1, 64, -1, 65, -1, -1, 66, -1, 67, -1,\n+ -1, 68, -1, 69, -1, -1, 70, -1, -1, -1,\n+ 71, -1, -1, 72, 73, 74, 75, -1, -1, -1,\n+ 76, 77, 78, -1, 79, 80, 81, 82, 83, -1,\n+ 84, 85, 86, -1, -1, 87, -1, -1, 88, 89,\n+ 90, 91, -1, -1, -1, -1, 92, -1, 93, 94,\n+ 95, 96, -1, 97, 98, 99, -1, -1, 100, 101,\n+ 102, -1, -1, -1, -1, -1, -1, 103, -1, -1,\n+ -1, 104, -1, 105, -1, 106, 107, -1, 108, -1,\n+ 109, 110, 111, -1, -1, -1, 112, 113, -1, 114,\n+ -1, 115, -1, 116, 117, -1, 118, -1, -1, 119,\n+ 120, 121, 122, -1, 123, -1, -1, -1, 124, 125,\n+ -1, -1, -1, -1, -1, -1, 126, -1, -1, -1,\n+ -1, -1, 127, 128, 129, -1, 130, 131, -1, -1,\n+ -1, -1, -1, 132, 133, -1, -1, 134, 135, 136,\n+ -1, 137, 138, -1, -1, -1, 139, 140, -1, -1,\n+ -1, -1, -1, 141, -1, -1, 142, -1, 143, -1,\n+ 144, -1, -1, 145, 146, 147, 148, -1, 149, -1,\n+ 150, 151, 152, 153, -1, -1, 154, 155, 156, 157,\n+ 158, -1, 159, 160, -1, -1, 161, -1, -1, 162,\n+ -1, 163, -1, -1, 164, 165, 166, 167, 168, -1,\n+ -1, -1, -1, 169, -1, 170, 171, -1, -1, -1,\n+ -1, 172, -1, -1, 173, -1, 174, -1, -1, -1,\n+ -1, -1, 175, -1, -1, 176, 177, -1, -1, -1,\n+ -1, -1, -1, -1, -1, -1, -1, 178, 179, 180,\n+ -1, -1, -1, -1, 181, -1, -1, -1, -1, 182,\n+ -1, -1, -1, -1, -1, 183, -1, -1, -1, 184,\n+ -1, 185, 186, 187, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, -1, 188, -1, 189, -1, -1, 190,\n+ -1, -1, -1, -1, 191, 192, 193, -1, -1, 194,\n+ -1, -1, 195, -1, -1, -1, 196, -1, 197, -1,\n+ -1, 198, -1, 199, -1, -1, -1, -1, -1, 200,\n+ 201, 202, 203, -1, 204, -1, -1, 205, -1, -1,\n+ 206, -1, 207, -1, -1, -1, -1, -1, 208, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, 209, -1, -1, -1, -1, -1, 210,\n+ -1, 211, -1, -1, -1, -1, -1, -1, 212, -1,\n+ -1, -1, -1, 213, -1, -1, -1, -1, -1, -1,\n+ -1, 214, -1, -1, -1, 215, -1, -1, -1, 216,\n+ 217, -1, -1, 218, -1, -1, -1, -1, 219, -1,\n+ -1, -1, -1, -1, -1, -1, -1, 220, -1, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, -1, -1, 221, -1, -1, -1, -1,\n+ 222, -1, -1, -1, -1, 223, -1, -1, -1, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, 224, -1,\n+ -1, -1, 225, 226, -1, -1, -1, -1, 227, -1,\n+ 228, -1, -1, -1, -1, -1, -1, -1, 229, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, 230, -1,\n+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, 231, -1, -1, 232, -1, -1, -1, -1,\n+ -1, -1, -1, -1, -1, -1, 233, -1, -1, 234,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n@@ -1160,9 +1161,10 @@ metafn_lookup::find (const char *str, si\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n+ -1, -1, -1, 235, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n- -1, -1, -1, -1, -1, -1, -1, 233\n+ 236\n };\n \n if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n", "prefixes": [] }