get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/2217407/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2217407,
    "url": "http://patchwork.ozlabs.org/api/patches/2217407/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/acgHqAm-2mPk4g-F@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": "<acgHqAm-2mPk4g-F@tucnak>",
    "list_archive_url": null,
    "date": "2026-03-28T16:54:01",
    "name": "c++, libstdc++, v2: Implement current_{function,class,namespace} metafn addition from P3795R2",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "53098a6f3291886ce2d611c8143ef8c5bd6aa44c",
    "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/acgHqAm-2mPk4g-F@tucnak/mbox/",
    "series": [
        {
            "id": 497882,
            "url": "http://patchwork.ozlabs.org/api/series/497882/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=497882",
            "date": "2026-03-28T16:54:01",
            "name": "c++, libstdc++, v2: Implement current_{function,class,namespace} metafn addition from P3795R2",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/497882/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2217407/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2217407/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=VMPlgiXF;\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=VMPlgiXF",
            "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 [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 4fjkPj4stMz1y1j\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 04:04:09 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 554C04BA2E3A\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 28 Mar 2026 17:04:07 +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 C592D4BA2E3A\n for <gcc-patches@gcc.gnu.org>; Sat, 28 Mar 2026 16:58:27 +0000 (GMT)",
            "from mx-prod-mc-05.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-189-5qYnca4EPYy-tIc5wEBszw-1; Sat,\n 28 Mar 2026 12:58:25 -0400",
            "from mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.12])\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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 439791956089; Sat, 28 Mar 2026 16:58:24 +0000 (UTC)",
            "from tucnak.zalov.cz (unknown [10.44.32.9])\n by mx-prod-int-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with\n ESMTPS\n id DBE041955F2B; Sat, 28 Mar 2026 16:58:22 +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 62SGwKYi1667423\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Sat, 28 Mar 2026 17:58:20 +0100",
            "(from jakub@localhost)\n by tucnak.zalov.cz (8.18.1/8.18.1/Submit) id 62SGwK0O1667422;\n Sat, 28 Mar 2026 17:58:20 +0100"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 554C04BA2E3A",
            "OpenDKIM Filter v2.11.0 sourceware.org C592D4BA2E3A"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org C592D4BA2E3A",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org C592D4BA2E3A",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774717107; cv=none;\n b=yCB2oHCBQtjIKLsPgIeQey2wZU0eusJV6wUp7Sm/gx1lX3umNDe35RrSr+WQv5rL0JXHeokh8kOKf/PuT0cu0wDE0qapfXmEbbUN6Ygl+fn6VWbrDTB/Pb48yyEfStsBeOiW7pqdEdEc5XI3mlICLRjfLDiUNJ7uRoev1wLNgAY=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774717107; c=relaxed/simple;\n bh=/V1RF/EPElK06C3SfqGpirfNOz3QdwgZQNheXpdJdb8=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=v583y3JLsODPKwFVJ6de6m+fA7yc/G/am7nskSWQOrU8MurDqxxXA9OcEpiBiMDqPsTotrrI0Ef8ps9KeoOBgrXic0g+/8QaAXmv6lapwm/72hTNVULVeiDkhQobyb/96NnSJfSlX0Qrp3OHCWoDwGDG8ZU20ao0fNbOETIffts=",
        "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=1774717107;\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:resent-to:resent-from:resent-message-id:\n in-reply-to:in-reply-to:references:references;\n bh=QVh/uhiLgLXQ3MDydMvwkYsdSCSGP4QzY19mu9YluBQ=;\n b=VMPlgiXFzPSEpRbvCWaPK+UwhlCbJLe145dysS7yCeiWDDacofLCBkY2BP2MeQok9GSb1X\n LdNqCnWkUI08fxbo7B0e8M7y9QH4Yxn4uiAB56BP+3qrF3OZ2wJeux3pl25T52YGlzxZVl\n sgYYvHjPK+zmHV7Z8VP3Z66YoXIxvWY=",
        "X-MC-Unique": "5qYnca4EPYy-tIc5wEBszw-1",
        "X-Mimecast-MFC-AGG-ID": "5qYnca4EPYy-tIc5wEBszw_1774717104",
        "Resent-From": "Jakub Jelinek <jakub@redhat.com>",
        "Resent-Date": "Sat, 28 Mar 2026 17:58:20 +0100",
        "Resent-Message-ID": "<acgIrNTH7diJIHS3@tucnak>",
        "Resent-To": "Jason Merrill <jason@redhat.com>,\n Marek Polacek <polacek@redhat.com>,\n Jonathan Wakely <jwakely@redhat.com>, gcc-patches@gcc.gnu.org,\n libstdc++@gcc.gnu.org",
        "Date": "Sat, 28 Mar 2026 17:54:01 +0100",
        "From": "Jakub Jelinek <jakub@redhat.com>",
        "To": "Jason Merrill <jason@redhat.com>, Marek Polacek <polacek@redhat.com>,\n Jonathan Wakely <jwakely@redhat.com>",
        "Cc": "gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org",
        "Subject": "[PATCH] c++, libstdc++, v2: Implement\n current_{function,class,namespace} metafn addition from P3795R2",
        "Message-ID": "<acgHqAm-2mPk4g-F@tucnak>",
        "References": "<acay_1BCmIb6JYbg@tucnak>",
        "MIME-Version": "1.0",
        "In-Reply-To": "<acay_1BCmIb6JYbg@tucnak>",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.12",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "gsBdxFSr4mZn_Fix-A1zDk90Pg5hNZ8wIZrp8o9ThFg_1774717104",
        "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 Fri, Mar 27, 2026 at 05:40:31PM +0100, Jakub Jelinek wrote:\n> The following patch implements addition of std::meta::current_function,\n> std::meta::current_class, std::meta::current_namespace metafunctions\n> from P3795R2 - Miscellaneous Reflection Cleanup paper.\n\nReposting as no longer RFC PATCH.\nBootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?\n\n2026-03-28  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 (current_scope, eval_current_function,\n\teval_current_class, eval_current_namespace): New functions.\n\t(eval_access_context_current): Use 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+current_scope (location_t loc, const constexpr_ctx *ctx, tree call,\n+\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,70 @@ 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 = current_scope (loc, ctx, call, non_constant_p,\n+\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 = current_scope (loc, ctx, call, non_constant_p,\n+\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 = 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+  return get_reflection_raw (loc, 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 = current_scope (loc, ctx, call, non_constant_p,\n+\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 +7754,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-27 15:50:49.360889233 +0100\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,  20, 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 686 \"metafns.gperf\"\n-      {\"variant_size\", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},\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 504 \"metafns.gperf\"\n-      {\"is_type\", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},\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 615 \"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 506 \"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 515 \"metafns.gperf\"\n+#line 623 \"metafns.gperf\"\n+      {\"is_constructible_type\", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},\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 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-      {\"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-      {\"is_nothrow_swappable_type\", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},\n-#line 593 \"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-      {\"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+      {\"has_automatic_storage_duration\", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},\n #line 524 \"metafns.gperf\"\n-      {\"has_ellipsis_parameter\", METAFN_HAS_ELLIPSIS_PARAMETER, 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+#line 518 \"metafns.gperf\"\n+      {\"is_constructor\", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},\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 610 \"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 601 \"metafns.gperf\"\n+      {\"is_reference_type\", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},\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 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 529 \"metafns.gperf\"\n+      {\"has_ellipsis_parameter\", METAFN_HAS_ELLIPSIS_PARAMETER, 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 677 \"metafns.gperf\"\n-      {\"decay\", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},\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 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,  17,  -1,  -1,  18,  -1,  19,  -1,  20,\n-       -1,  21,  22,  -1,  23,  -1,  -1,  -1,  -1,  24,\n-       25,  26,  27,  -1,  -1,  28,  29,  -1,  30,  -1,\n-       31,  -1,  32,  33,  -1,  34,  -1,  -1,  -1,  -1,\n-       35,  36,  37,  38,  39,  40,  -1,  -1,  -1,  -1,\n-       -1,  41,  42,  -1,  43,  -1,  44,  -1,  -1,  45,\n-       -1,  46,  -1,  -1,  -1,  -1,  -1,  -1,  -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,  79,\n-       -1,  -1,  -1,  -1,  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, 223,  -1,  -1,  -1,\n-       -1,  -1, 224,  -1,  -1,  -1,  -1,  -1,  -1, 225,\n-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,\n-       -1,  -1, 226,  -1,  -1,  -1,  -1,  -1, 227,  -1,\n-       -1,  -1,  -1,  -1, 228,  -1,  -1,  -1,  -1,  -1,\n-       -1,  -1,  -1,  -1,  -1, 229,  -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, 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,  -1,  55,  56,  57,  -1,  58,  -1,\n+       -1,  59,  -1,  -1,  60,  61,  -1,  62,  -1,  -1,\n+       -1,  63,  -1,  64,  -1,  -1,  65,  -1,  66,  -1,\n+       -1,  67,  -1,  68,  -1,  -1,  69,  -1,  -1,  -1,\n+       70,  -1,  -1,  71,  72,  73,  74,  -1,  -1,  -1,\n+       75,  76,  77,  -1,  78,  79,  80,  81,  82,  -1,\n+       83,  84,  85,  -1,  -1,  86,  -1,  -1,  87,  88,\n+       89,  90,  -1,  -1,  -1,  -1,  91,  -1,  92,  93,\n+       94,  95,  -1,  96,  97,  98,  -1,  -1,  99, 100,\n+      101,  -1,  -1,  -1,  -1,  -1,  -1, 102,  -1,  -1,\n+       -1, 103, 104, 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": []
}