2026-03-30 Jakub Jelinek <[email protected]>
gcc/cp/
* metafns.gperf (enum metafn_code): Add METAFN_CURRENT_FUNCTION,
METAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.
(enum metafn_kind): Add METAFN_KIND_INFO_VOID.
(current_function, current_class, current_namespace): New
metafunctions.
* pt.cc (value_dependent_expression_p): Make current_function(),
current_class() and current_namespace() calls dependent if they
are inside of template.
* reflect.cc (reflect_current_scope, eval_current_function,
eval_current_class, eval_current_namespace): New functions.
(eval_access_context_current): Use reflect_current_scope.
(process_metafunction): Handle METAFN_CURRENT_FUNCTION,
METAFN_CURRENT_CLASS and METAFN_CURRENT_NAMESPACE.
* metafns.h: Regenerate.
gcc/testsuite/
* g++.dg/reflect/current_function1.C: New test.
* g++.dg/reflect/current_function2.C: New test.
* g++.dg/reflect/current_class1.C: New test.
* g++.dg/reflect/current_class2.C: New test.
* g++.dg/reflect/current_namespace1.C: New test.
libstdc++-v3/
* include/std/meta (std::meta::current_function,
std::meta::current_class, std::meta::current_namespace): New
declarations.
* src/c++23/std.cc.in: Export those 3.
--- gcc/cp/metafns.gperf.jj 2026-03-27 10:17:14.022332567 +0100
+++ gcc/cp/metafns.gperf 2026-03-27 15:15:06.493926265 +0100
@@ -119,6 +119,9 @@ enum metafn_code {
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,
METAFN_HAS_INACCESSIBLE_BASES,
METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
+ METAFN_CURRENT_FUNCTION,
+ METAFN_CURRENT_CLASS,
+ METAFN_CURRENT_NAMESPACE,
METAFN_MEMBERS_OF,
METAFN_BASES_OF,
METAFN_STATIC_DATA_MEMBERS_OF,
@@ -363,6 +366,8 @@ enum metafn_kind {
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET
= (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT)
| METAFN_KIND_RET_BOOL,
+ METAFN_KIND_INFO_VOID
+ = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,
METAFN_KIND_INFO_INFO
= (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,
METAFN_KIND_INFO_TINFO
@@ -554,6 +559,9 @@ is_accessible, METAFN_IS_ACCESSIBLE, MET
has_inaccessible_nonstatic_data_members,
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
has_inaccessible_bases, METAFN_HAS_INACCESSIBLE_BASES,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
has_inaccessible_subobjects, METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,
+current_function, METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,
+current_class, METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,
+current_namespace, METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,
members_of, METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
bases_of, METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
static_data_members_of, METAFN_STATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,
--- gcc/cp/pt.cc.jj 2026-03-27 10:17:14.033332387 +0100
+++ gcc/cp/pt.cc 2026-03-27 15:20:11.586883334 +0100
@@ -29794,12 +29794,19 @@ value_dependent_expression_p (tree expre
is enclosed by a scope corresponding to a templated entity. */
if (flag_reflection
&& fn
- && metafunction_p (fn)
- && id_equal (DECL_NAME (fn), "current")
- && DECL_CLASS_SCOPE_P (fn)
- && id_equal (TYPE_IDENTIFIER (DECL_CONTEXT (fn)),
- "access_context"))
- return true;
+ && metafunction_p (fn))
+ {
+ if (id_equal (DECL_NAME (fn), "current")
+ && DECL_CLASS_SCOPE_P (fn)
+ && id_equal (TYPE_IDENTIFIER (DECL_CONTEXT (fn)),
+ "access_context"))
+ return true;
+ /* Similarly for these 3 metafns. */
+ if (id_equal (DECL_NAME (fn), "current_function")
+ || id_equal (DECL_NAME (fn), "current_class")
+ || id_equal (DECL_NAME (fn), "current_namespace"))
+ return true;
+ }
return false;
}
--- gcc/cp/reflect.cc.jj 2026-03-27 10:17:14.033332387 +0100
+++ gcc/cp/reflect.cc 2026-03-27 15:51:18.122236375 +0100
@@ -6236,11 +6236,11 @@ eval_reflect_constant_array (location_t
return get_reflection_raw (loc, decl);
}
-/* Process std::meta::access_context::current. */
+/* Return CURRENT-SCOPE(P). */
static tree
-eval_access_context_current (location_t loc, const constexpr_ctx *ctx,
- tree call, bool *non_constant_p)
+reflect_current_scope (location_t loc, const constexpr_ctx *ctx, tree call,
+ bool *non_constant_p, const char *name)
{
tree scope = cxx_constexpr_caller (ctx);
/* Ignore temporary current_function_decl changes caused by
@@ -6259,8 +6259,8 @@ eval_access_context_current (location_t
/* Outside of functions limit this to manifestly constant-evaluation
so that we don't fold it prematurely. */
if (!cxx_constexpr_quiet_p (ctx))
- error_at (loc, "%<access_context::current%> used outside of "
- "manifestly constant-evaluation");
+ error_at (loc, "%qs used outside of manifestly constant-evaluation",
+ name);
*non_constant_p = true;
return call;
}
@@ -6276,6 +6276,63 @@ eval_access_context_current (location_t
&& (lam = CLASSTYPE_LAMBDA_EXPR (CP_DECL_CONTEXT (scope)))
&& LAMBDA_EXPR_CONSTEVAL_BLOCK_P (lam))
scope = CP_TYPE_CONTEXT (CP_DECL_CONTEXT (scope));
+ return scope;
+}
+
+/* Process std::meta::current_function. */
+
+static tree
+eval_current_function (location_t loc, const constexpr_ctx *ctx,
+ tree call, bool *non_constant_p, tree *jump_target,
+ tree fun)
+{
+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,
+ "std::meta::current_function");
+ if (TREE_CODE (scope) != FUNCTION_DECL)
+ throw_exception (loc, ctx, "current scope does not represent a function",
+ fun, non_constant_p, jump_target);
+ return get_reflection_raw (loc, scope);
+}
+
+/* Process std::meta::current_class. */
+
+static tree
+eval_current_class (location_t loc, const constexpr_ctx *ctx,
+ tree call, bool *non_constant_p, tree *jump_target,
+ tree fun)
+{
+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,
+ "std::meta::current_class");
+ if (TREE_CODE (scope) == FUNCTION_DECL
+ && DECL_CONTEXT (scope)
+ && TYPE_P (DECL_CONTEXT (scope)))
+ scope = DECL_CONTEXT (scope);
+ if (!CLASS_TYPE_P (scope))
+ throw_exception (loc, ctx, "current scope does not represent a class"
+ " nor a member function",
+ fun, non_constant_p, jump_target);
+ return get_reflection_raw (loc, scope);
+}
+
+/* Process std::meta::current_namespace. */
+
+static tree
+eval_current_namespace (location_t loc, const constexpr_ctx *ctx,
+ tree call, bool *non_constant_p)
+{
+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,
+ "std::meta::current_namespace");
+ return get_reflection_raw (loc, decl_namespace_context (scope));
+}
+
+/* Process std::meta::access_context::current. */
+
+static tree
+eval_access_context_current (location_t loc, const constexpr_ctx *ctx,
+ tree call, bool *non_constant_p)
+{
+ tree scope = reflect_current_scope (loc, ctx, call, non_constant_p,
+ "std::meta::access_context::current");
tree access_context = TREE_TYPE (call);
if (TREE_CODE (access_context) != RECORD_TYPE)
{
@@ -7690,6 +7747,14 @@ process_metafunction (const constexpr_ct
return eval_has_inaccessible_subobjects (loc, ctx, h, expr, call,
non_constant_p, jump_target,
fun);
+ case METAFN_CURRENT_FUNCTION:
+ return eval_current_function (loc, ctx, call, non_constant_p,
+ jump_target, fun);
+ case METAFN_CURRENT_CLASS:
+ return eval_current_class (loc, ctx, call, non_constant_p,
+ jump_target, fun);
+ case METAFN_CURRENT_NAMESPACE:
+ return eval_current_namespace (loc, ctx, call, non_constant_p);
case METAFN_MEMBERS_OF:
return eval_members_of (loc, ctx, h, expr, call, non_constant_p,
jump_target, fun);
--- gcc/testsuite/g++.dg/reflect/current_function1.C.jj 2026-03-27
15:56:04.804555671 +0100
+++ gcc/testsuite/g++.dg/reflect/current_function1.C 2026-03-27
16:38:06.301962448 +0100
@@ -0,0 +1,76 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::current_function.
+
+#include <meta>
+
+using namespace std::meta;
+
+consteval info
+foo (info x = current_function ())
+{
+ static_assert (current_function () == ^^foo);
+ return x;
+}
+
+static_assert (foo (^^std) == ^^std);
+
+void
+qux ()
+{
+ static_assert (foo () == ^^qux);
+}
+
+struct T
+{
+ info t = current_function ();
+};
+
+struct U
+{
+ consteval U () {}
+ info u = current_function ();
+};
+
+struct V : U
+{
+ using U::U;
+ info v = current_function ();
+};
+
+void
+bar ()
+{
+ static_assert (current_function () == ^^bar);
+ static_assert (foo (^^foo) == ^^foo);
+ static_assert (foo () == ^^bar);
+ static_assert (T {}.t == ^^bar);
+ consteval {
+ static_assert (current_function () == ^^bar);
+ consteval {
+ static_assert (current_function () == ^^bar);
+ }
+ }
+ auto l = [] () {
+ int v = 0;
+ static_assert (current_function () == parent_of (^^v));
+ static_assert (parent_of (parent_of (current_function ())) == ^^bar);
+ };
+ auto l2 = [] () -> int (&) [current_function () == ^^bar ? 2 : 3] {
+ static int a[2];
+ return a;
+ };
+}
+
+consteval bool
+baz ()
+{
+ constexpr U u;
+ static_assert (is_constructor (u.u) && parent_of (u.u) == ^^U);
+ constexpr V v;
+ static_assert (is_constructor (v.u) && parent_of (v.u) == ^^U);
+ static_assert (is_constructor (v.v) && parent_of (v.v) == ^^V);
+ return true;
+}
+
+static_assert (baz ());
--- gcc/testsuite/g++.dg/reflect/current_function2.C.jj 2026-03-27
16:43:41.361420414 +0100
+++ gcc/testsuite/g++.dg/reflect/current_function2.C 2026-03-27
17:26:07.718334831 +0100
@@ -0,0 +1,78 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::access_context.
+
+#include <meta>
+
+using namespace std::meta;
+
+constexpr auto a = current_function (); // { dg-error "uncaught
exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not
represent a function'" }
+
+consteval info
+foo (info x = current_function ())
+{
+ return x;
+}
+
+static_assert (foo (^^std) == ^^std);
+constexpr auto b = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+
+namespace N
+{
+ constexpr auto c = current_function (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ constexpr auto d = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ namespace M
+ {
+ constexpr auto e = current_function (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ constexpr auto f = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ consteval {
+ constexpr auto g = current_function (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ consteval {
+ constexpr auto h = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ }
+ }
+ }
+}
+
+struct T
+{
+ static_assert (current_function () != ^^T); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ // { dg-error "non-constant condition for
static assertion" "" { target *-*-* } .-1 }
+ static_assert (foo () != ^^T); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a
function'" }
+ info t = current_function (); // { dg-error "non-constant condition
for static assertion" "" { target *-*-* } .-1 }
+};
+
+struct U
+{
+ consteval U () {}
+ info u = current_function ();
+};
+
+struct V : U
+{
+ using U::U;
+ info v = current_function ();
+ consteval {
+ static_assert (current_function () != ^^V); // { dg-error
"uncaught exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope
does not represent a function'" }
+ consteval { // { dg-error "non-constant
condition for static assertion" "" { target *-*-* } .-1 }
+ static_assert (current_function () != ^^V); // { dg-error "uncaught
exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not
represent a function'" }
+ } // { dg-error "non-constant condition
for static assertion" "" { target *-*-* } .-1 }
+ }
+};
+
+consteval {
+ static_assert (current_function () != ^^::); // { dg-error "uncaught
exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not
represent a function'" }
+ consteval { // { dg-error "non-constant condition
for static assertion" "" { target *-*-* } .-1 }
+ static_assert (current_function () != ^^::); // { dg-error "uncaught
exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not
represent a function'" }
+ } // { dg-error "non-constant condition
for static assertion" "" { target *-*-* } .-1 }
+}
+
+namespace O
+{
+ int a[2];
+ auto
+ foo () -> int (&) [current_function () != ^^O ? 2 : 3] // { dg-error "size
of array is not an integral constant-expression" }
+ {
+ return a; // { dg-error "invalid
initialization of reference of type" }
+ }
+}
--- gcc/testsuite/g++.dg/reflect/current_class1.C.jj 2026-03-27
16:15:47.965107295 +0100
+++ gcc/testsuite/g++.dg/reflect/current_class1.C 2026-03-27
17:14:36.688766585 +0100
@@ -0,0 +1,70 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::current_class.
+
+#include <meta>
+
+using namespace std::meta;
+
+consteval info
+foo (info x = current_class ())
+{
+ try
+ {
+ current_class ();
+ }
+ catch (const std::meta::exception &)
+ {
+ return x;
+ }
+ throw 1;
+}
+
+static_assert (foo (^^std) == ^^std);
+
+struct T
+{
+ static_assert (current_class () == ^^T);
+ static_assert (foo () == ^^T);
+ info t = current_class ();
+};
+
+struct U
+{
+ static_assert (current_class () == ^^U);
+ static_assert (foo () == ^^U);
+ consteval U () {}
+ info u = current_class ();
+};
+
+struct V : U
+{
+ static_assert (current_class () == ^^V);
+ static_assert (foo () == ^^V);
+ using U::U;
+ consteval {
+ static_assert (current_class () == ^^V);
+ static_assert (foo () == ^^V);
+ consteval {
+ static_assert (current_class () == ^^V);
+ static_assert (foo () == ^^V);
+ }
+ }
+ void baz ()
+ {
+ static_assert (current_class () == ^^V);
+ static_assert (foo () == ^^V);
+ static_assert (T {}.t == ^^V);
+ static_assert (U {}.u == ^^U);
+ }
+};
+
+void
+bar ()
+{
+ auto l = [] () {
+ int v = 0;
+ static_assert (current_class () == parent_of (parent_of (^^v)));
+ static_assert (parent_of (current_class ()) == ^^bar);
+ };
+}
--- gcc/testsuite/g++.dg/reflect/current_class2.C.jj 2026-03-27
16:49:27.897688548 +0100
+++ gcc/testsuite/g++.dg/reflect/current_class2.C 2026-03-27
17:18:09.234250461 +0100
@@ -0,0 +1,73 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::current_class.
+
+#include <meta>
+
+using namespace std::meta;
+
+constexpr auto a = current_class (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+
+consteval info
+foo (info x = current_class ())
+{
+ return x;
+}
+
+void
+qux ()
+{
+ static constexpr auto a = current_class (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+}
+
+static_assert (foo (^^std) == ^^std);
+constexpr auto b = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+
+namespace N
+{
+ struct S {};
+ constexpr auto c = foo (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+ namespace M
+ {
+ constexpr auto d = current_class (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+ consteval {
+ auto e = foo ();
+ consteval {
+ auto f = current_class ();
+ } // { dg-error "uncaught
exception of type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not
represent a class nor a member function'" }
+ } // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+ }
+}
+
+struct T
+{
+ info t = current_class ();
+};
+
+void
+bar ()
+{
+ static constexpr auto g = current_class (); // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+ static constexpr auto h = T{}.t; // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+ auto l2 = [] () -> int (&) [current_class () != ^^bar ? 2 : 3] { // { dg-error
"size of array is not an integral constant-expression" }
+ static int a[2];
+ return a; // { dg-error "invalid
initialization of reference of type" }
+ };
+}
+
+consteval {
+ auto a = current_class ();
+ consteval {
+ auto b = foo ();
+ } // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+} // { dg-error "uncaught exception of
type 'std::meta::exception'; 'what\\\(\\\)': 'current scope does not represent a class
nor a member function'" }
+
+namespace O
+{
+ int a[2];
+ auto
+ foo () -> int (&) [current_class () != ^^O ? 2 : 3] // { dg-error "size of
array is not an integral constant-expression" }
+ {
+ return a; // { dg-error "invalid
initialization of reference of type" }
+ }
+}
--- gcc/testsuite/g++.dg/reflect/current_namespace1.C.jj 2026-03-27
16:01:38.206095962 +0100
+++ gcc/testsuite/g++.dg/reflect/current_namespace1.C 2026-03-27
16:38:23.647675541 +0100
@@ -0,0 +1,93 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::current_namespace.
+
+#include <meta>
+
+using namespace std::meta;
+
+static_assert (current_namespace () == ^^::);
+
+consteval info
+foo (info x = current_namespace ())
+{
+ static_assert (current_namespace () == ^^::);
+ return x;
+}
+
+static_assert (foo (^^std) == ^^std);
+static_assert (foo () == ^^::);
+
+namespace N
+{
+ static_assert (foo () == ^^N);
+ static_assert (current_namespace () == ^^N);
+ namespace M
+ {
+ static_assert (foo () == ^^M);
+ static_assert (current_namespace () == ^^M);
+ consteval {
+ static_assert (current_namespace () == ^^M);
+ consteval {
+ static_assert (current_namespace () == ^^M);
+ }
+ }
+ }
+}
+
+struct T
+{
+ static_assert (current_namespace () == ^^::);
+ static_assert (foo () == ^^::);
+ info t = current_namespace ();
+};
+
+namespace O
+{
+ struct T
+ {
+ static_assert (current_namespace () == ^^O);
+ static_assert (foo () == ^^O);
+ info t = current_namespace ();
+ };
+}
+
+void
+bar ()
+{
+ static_assert (current_namespace () == ^^::);
+ static_assert (T {}.t == ^^::);
+ static_assert (O::T {}.t == ^^::);
+ static_assert (foo (^^foo) == ^^foo);
+ static_assert (foo () == ^^::);
+}
+
+namespace P
+{
+ void
+ bar ()
+ {
+ static_assert (current_namespace () == ^^P);
+ static_assert (T {}.t == ^^P);
+ static_assert (O::T {}.t == ^^P);
+ static_assert (foo (^^foo) == ^^foo);
+ static_assert (foo () == ^^P);
+ }
+}
+
+consteval {
+ static_assert (current_namespace () == ^^::);
+ consteval {
+ static_assert (current_namespace () == ^^::);
+ }
+}
+
+namespace Q
+{
+ int a[2];
+ auto
+ foo () -> int (&) [current_namespace () == ^^Q ? 2 : 3]
+ {
+ return a;
+ }
+}
--- libstdc++-v3/include/std/meta.jj 2026-03-27 10:17:22.940187041 +0100
+++ libstdc++-v3/include/std/meta 2026-03-27 15:09:54.057090580 +0100
@@ -342,6 +342,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
consteval bool has_inaccessible_bases(info, access_context);
consteval bool has_inaccessible_subobjects(info, access_context);
+ // [meta.reflection.scope], scope identification
+ consteval info current_function();
+ consteval info current_class();
+ consteval info current_namespace();
+
// [meta.reflection.member.queries], reflection member queries
consteval vector<info> members_of(info, access_context);
consteval vector<info> bases_of(info, access_context);
--- libstdc++-v3/src/c++23/std.cc.in.jj 2026-03-27 10:17:22.970186552 +0100
+++ libstdc++-v3/src/c++23/std.cc.in 2026-03-27 15:11:02.064966469 +0100
@@ -2195,6 +2195,9 @@ export namespace std
using std::meta::has_inaccessible_nonstatic_data_members;
using std::meta::has_inaccessible_bases;
using std::meta::has_inaccessible_subobjects;
+ using std::meta::current_function;
+ using std::meta::current_class;
+ using std::meta::current_namespace;
using std::meta::members_of;
using std::meta::bases_of;
using std::meta::static_data_members_of;
--- gcc/cp/metafns.h.jj 2026-03-27 10:17:14.022332567 +0100
+++ gcc/cp/metafns.h 2026-03-30 23:55:47.453025966 +0200
@@ -147,6 +147,9 @@ enum metafn_code {
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS,
METAFN_HAS_INACCESSIBLE_BASES,
METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
+ METAFN_CURRENT_FUNCTION,
+ METAFN_CURRENT_CLASS,
+ METAFN_CURRENT_NAMESPACE,
METAFN_MEMBERS_OF,
METAFN_BASES_OF,
METAFN_STATIC_DATA_MEMBERS_OF,
@@ -391,6 +394,8 @@ enum metafn_kind {
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET
= (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT)
| METAFN_KIND_RET_BOOL,
+ METAFN_KIND_INFO_VOID
+ = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,
METAFN_KIND_INFO_INFO
= (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO,
METAFN_KIND_INFO_TINFO
@@ -472,7 +477,7 @@ enum metafn_kind {
= (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
| METAFN_KIND_RET_U8STRING_VIEW
};
-#line 448 "metafns.gperf"
+#line 453 "metafns.gperf"
struct metafn_info
{
/* A name within "std::meta::" (or "std::meta::access_context::"). */
@@ -484,7 +489,7 @@ struct metafn_info
/* METAFN_KIND_ kind of arguments and return type. */
metafn_kind kind;
};
-/* maximum key range = 879, duplicates = 0 */
+/* maximum key range = 782, duplicates = 0 */
class metafn_lookup
{
@@ -499,32 +504,32 @@ metafn_lookup::hash (const char *str, si
{
static const unsigned short asso_values[] =
{
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 0, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 5, 100, 145, 10, 45,
- 165, 5, 55, 50, 72, 20, 248, 0, 55, 105,
- 0, 205, 0, 45, 35, 55, 25, 195, 5, 199,
- 20, 311, 80, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918, 918, 918, 918,
- 918, 918, 918, 918, 918, 918, 918
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 0, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 5, 45, 145, 10, 45,
+ 190, 5, 55, 35, 115, 20, 346, 0, 60, 110,
+ 0, 219, 0, 40, 35, 20, 25, 160, 5, 80,
+ 0, 183, 45, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821
};
unsigned int hval = len;
@@ -583,11 +588,11 @@ metafn_lookup::find (const char *str, si
{
enum
{
- TOTAL_KEYWORDS = 234,
+ TOTAL_KEYWORDS = 237,
MIN_WORD_LENGTH = 4,
MAX_WORD_LENGTH = 40,
MIN_HASH_VALUE = 39,
- MAX_HASH_VALUE = 917
+ MAX_HASH_VALUE = 820
};
#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)
@@ -596,474 +601,480 @@ metafn_lookup::find (const char *str, si
#endif
static const struct metafn_info wordlist[] =
{
-#line 648 "metafns.gperf"
+#line 656 "metafns.gperf"
{"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
-#line 578 "metafns.gperf"
+#line 586 "metafns.gperf"
{"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 583 "metafns.gperf"
+#line 591 "metafns.gperf"
{"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 489 "metafns.gperf"
+#line 494 "metafns.gperf"
{"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
-#line 535 "metafns.gperf"
+#line 540 "metafns.gperf"
{"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
-#line 542 "metafns.gperf"
+#line 547 "metafns.gperf"
{"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
-#line 503 "metafns.gperf"
+#line 479 "metafns.gperf"
+ {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
+#line 508 "metafns.gperf"
{"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
-#line 654 "metafns.gperf"
+#line 662 "metafns.gperf"
{"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 633 "metafns.gperf"
+#line 641 "metafns.gperf"
{"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 659 "metafns.gperf"
+#line 667 "metafns.gperf"
{"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE,
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 638 "metafns.gperf"
+#line 646 "metafns.gperf"
{"is_nothrow_copy_assignable_type",
METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 660 "metafns.gperf"
+#line 668 "metafns.gperf"
{"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 635 "metafns.gperf"
+#line 643 "metafns.gperf"
{"is_nothrow_copy_constructible_type",
METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 651 "metafns.gperf"
+#line 659 "metafns.gperf"
{"is_base_of_type", METAFN_IS_BASE_OF_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 639 "metafns.gperf"
+#line 647 "metafns.gperf"
{"is_nothrow_move_assignable_type",
METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 636 "metafns.gperf"
+#line 658 "metafns.gperf"
+ {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 644 "metafns.gperf"
{"is_nothrow_move_constructible_type",
METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 527 "metafns.gperf"
+#line 532 "metafns.gperf"
{"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 579 "metafns.gperf"
+#line 587 "metafns.gperf"
{"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 472 "metafns.gperf"
+#line 645 "metafns.gperf"
+ {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 650 "metafns.gperf"
+ {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 477 "metafns.gperf"
{"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
-#line 484 "metafns.gperf"
+#line 489 "metafns.gperf"
{"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
-#line 567 "metafns.gperf"
+#line 575 "metafns.gperf"
{"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
-#line 687 "metafns.gperf"
+#line 695 "metafns.gperf"
{"variant_alternative", METAFN_VARIANT_ALTERNATIVE,
METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 605 "metafns.gperf"
+#line 613 "metafns.gperf"
{"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 474 "metafns.gperf"
- {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
-#line 508 "metafns.gperf"
+#line 513 "metafns.gperf"
{"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 505 "metafns.gperf"
+#line 510 "metafns.gperf"
{"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
-#line 656 "metafns.gperf"
+#line 466 "metafns.gperf"
+ {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
+#line 664 "metafns.gperf"
{"is_pointer_interconvertible_base_of_type",
METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 612 "metafns.gperf"
+#line 620 "metafns.gperf"
{"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 488 "metafns.gperf"
+#line 694 "metafns.gperf"
+ {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
+#line 493 "metafns.gperf"
{"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
-#line 534 "metafns.gperf"
+#line 539 "metafns.gperf"
{"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
-#line 650 "metafns.gperf"
- {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 558 "metafns.gperf"
+#line 509 "metafns.gperf"
+ {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
+#line 566 "metafns.gperf"
{"bases_of", METAFN_BASES_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 497 "metafns.gperf"
- {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE,
METAFN_KIND_BOOL_INFO,},
-#line 526 "metafns.gperf"
+#line 531 "metafns.gperf"
{"is_function_template", METAFN_IS_FUNCTION_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 637 "metafns.gperf"
- {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 509 "metafns.gperf"
+#line 514 "metafns.gperf"
{"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION,
METAFN_KIND_BOOL_INFO,},
-#line 642 "metafns.gperf"
- {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 653 "metafns.gperf"
+#line 628 "metafns.gperf"
+ {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 661 "metafns.gperf"
{"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 643 "metafns.gperf"
+#line 651 "metafns.gperf"
{"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 525 "metafns.gperf"
+#line 696 "metafns.gperf"
+ {"type_order", METAFN_TYPE_ORDER,
METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
+#line 530 "metafns.gperf"
{"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 634 "metafns.gperf"
+#line 642 "metafns.gperf"
{"is_nothrow_default_constructible_type",
METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 568 "metafns.gperf"
+#line 576 "metafns.gperf"
{"can_substitute", METAFN_CAN_SUBSTITUTE,
METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 530 "metafns.gperf"
+#line 535 "metafns.gperf"
{"is_conversion_function_template",
METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 461 "metafns.gperf"
- {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
-#line 617 "metafns.gperf"
+#line 523 "metafns.gperf"
+ {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT,
METAFN_KIND_BOOL_INFO,},
+#line 625 "metafns.gperf"
{"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 686 "metafns.gperf"
- {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 504 "metafns.gperf"
- {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 615 "metafns.gperf"
+#line 572 "metafns.gperf"
+ {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
+#line 474 "metafns.gperf"
+ {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
+#line 511 "metafns.gperf"
+ {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
+#line 623 "metafns.gperf"
{"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 495 "metafns.gperf"
- {"has_automatic_storage_duration",
METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 620 "metafns.gperf"
- {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 684 "metafns.gperf"
- {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 524 "metafns.gperf"
+#line 631 "metafns.gperf"
+ {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 502 "metafns.gperf"
+ {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE,
METAFN_KIND_BOOL_INFO,},
+#line 529 "metafns.gperf"
{"is_vararg_function", METAFN_IS_VARARG_FUNCTION,
METAFN_KIND_BOOL_INFO,},
-#line 515 "metafns.gperf"
+#line 520 "metafns.gperf"
{"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
-#line 551 "metafns.gperf"
+#line 692 "metafns.gperf"
+ {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
+#line 556 "metafns.gperf"
{"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
-#line 544 "metafns.gperf"
- {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
-#line 592 "metafns.gperf"
+#line 600 "metafns.gperf"
{"is_reflection_type", METAFN_IS_REFLECTION_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 595 "metafns.gperf"
+#line 574 "metafns.gperf"
+ {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
+#line 603 "metafns.gperf"
{"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 655 "metafns.gperf"
+#line 663 "metafns.gperf"
{"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 566 "metafns.gperf"
- {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 518 "metafns.gperf"
- {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT,
METAFN_KIND_BOOL_INFO,},
-#line 691 "metafns.gperf"
+#line 699 "metafns.gperf"
{"current", METAFN_ACCESS_CONTEXT_CURRENT,
METAFN_KIND_ACCESS_CONTEXT_VOID,},
-#line 678 "metafns.gperf"
- {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 533 "metafns.gperf"
+#line 562 "metafns.gperf"
+ {"current_function", METAFN_CURRENT_FUNCTION, METAFN_KIND_INFO_VOID,},
+#line 538 "metafns.gperf"
{"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 688 "metafns.gperf"
- {"type_order", METAFN_TYPE_ORDER,
METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
-#line 679 "metafns.gperf"
+#line 686 "metafns.gperf"
+ {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
+#line 629 "metafns.gperf"
+ {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 687 "metafns.gperf"
{"common_reference", METAFN_COMMON_REFERENCE,
METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 543 "metafns.gperf"
- {"has_default_member_initializer",
METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
-#line 685 "metafns.gperf"
+#line 693 "metafns.gperf"
{"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 572 "metafns.gperf"
+#line 580 "metafns.gperf"
{"reflect_function", METAFN_REFLECT_FUNCTION,
METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 523 "metafns.gperf"
- {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT,
METAFN_KIND_BOOL_INFO,},
-#line 618 "metafns.gperf"
- {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 469 "metafns.gperf"
- {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 513 "metafns.gperf"
+#line 500 "metafns.gperf"
+ {"has_automatic_storage_duration",
METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
+#line 524 "metafns.gperf"
+ {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT,
METAFN_KIND_BOOL_INFO,},
+#line 518 "metafns.gperf"
{"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 623 "metafns.gperf"
- {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 641 "metafns.gperf"
+#line 549 "metafns.gperf"
+ {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
+#line 626 "metafns.gperf"
+ {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 649 "metafns.gperf"
{"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 593 "metafns.gperf"
+#line 610 "metafns.gperf"
+ {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 601 "metafns.gperf"
{"is_reference_type", METAFN_IS_REFERENCE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 500 "metafns.gperf"
- {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 640 "metafns.gperf"
+#line 593 "metafns.gperf"
+ {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 648 "metafns.gperf"
{"is_nothrow_swappable_with_type",
METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 599 "metafns.gperf"
- {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 621 "metafns.gperf"
- {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 506 "metafns.gperf"
- {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 516 "metafns.gperf"
- {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
-#line 550 "metafns.gperf"
- {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 564 "metafns.gperf"
- {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 519 "metafns.gperf"
- {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT,
METAFN_KIND_BOOL_INFO,},
-#line 619 "metafns.gperf"
- {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 538 "metafns.gperf"
- {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 602 "metafns.gperf"
- {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 517 "metafns.gperf"
- {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 539 "metafns.gperf"
- {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER,
METAFN_KIND_BOOL_INFO,},
-#line 557 "metafns.gperf"
- {"members_of", METAFN_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 625 "metafns.gperf"
+#line 633 "metafns.gperf"
{"is_trivially_constructible_type",
METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 630 "metafns.gperf"
+ {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 638 "metafns.gperf"
{"is_trivially_copy_assignable_type",
METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 627 "metafns.gperf"
+#line 688 "metafns.gperf"
+ {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
+#line 635 "metafns.gperf"
{"is_trivially_copy_constructible_type",
METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 649 "metafns.gperf"
- {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
-#line 588 "metafns.gperf"
- {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 607 "metafns.gperf"
+ {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 577 "metafns.gperf"
+ {"substitute", METAFN_SUBSTITUTE,
METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
+#line 555 "metafns.gperf"
+ {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
+#line 521 "metafns.gperf"
+ {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
#line 548 "metafns.gperf"
- {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
-#line 528 "metafns.gperf"
- {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 512 "metafns.gperf"
+ {"has_default_member_initializer",
METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
+#line 517 "metafns.gperf"
{"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION,
METAFN_KIND_BOOL_INFO,},
-#line 473 "metafns.gperf"
- {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
-#line 540 "metafns.gperf"
- {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER,
METAFN_KIND_BOOL_INFO,},
-#line 682 "metafns.gperf"
+#line 612 "metafns.gperf"
+ {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 627 "metafns.gperf"
+ {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 592 "metafns.gperf"
+ {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 528 "metafns.gperf"
+ {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT,
METAFN_KIND_BOOL_INFO,},
+#line 690 "metafns.gperf"
{"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 502 "metafns.gperf"
- {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE,
METAFN_KIND_BOOL_INFO,},
-#line 594 "metafns.gperf"
+#line 522 "metafns.gperf"
+ {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
+#line 609 "metafns.gperf"
+ {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 543 "metafns.gperf"
+ {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
+#line 602 "metafns.gperf"
{"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 545 "metafns.gperf"
- {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
-#line 476 "metafns.gperf"
- {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 675 "metafns.gperf"
- {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 616 "metafns.gperf"
- {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 680 "metafns.gperf"
- {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
-#line 521 "metafns.gperf"
- {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER,
METAFN_KIND_BOOL_INFO,},
-#line 464 "metafns.gperf"
+#line 544 "metafns.gperf"
+ {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER,
METAFN_KIND_BOOL_INFO,},
+#line 565 "metafns.gperf"
+ {"members_of", METAFN_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
+#line 478 "metafns.gperf"
+ {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
+#line 505 "metafns.gperf"
+ {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
+#line 469 "metafns.gperf"
{"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 597 "metafns.gperf"
- {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 669 "metafns.gperf"
+#line 677 "metafns.gperf"
{"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE,
METAFN_KIND_INFO_TINFO,},
-#line 490 "metafns.gperf"
- {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 507 "metafns.gperf"
+#line 553 "metafns.gperf"
+ {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
+#line 512 "metafns.gperf"
{"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS,
METAFN_KIND_BOOL_INFO,},
-#line 631 "metafns.gperf"
+#line 657 "metafns.gperf"
+ {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
+#line 596 "metafns.gperf"
+ {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 533 "metafns.gperf"
+ {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
+#line 608 "metafns.gperf"
+ {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 564 "metafns.gperf"
+ {"current_namespace", METAFN_CURRENT_NAMESPACE, METAFN_KIND_INFO_VOID,},
+#line 488 "metafns.gperf"
+ {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
+#line 683 "metafns.gperf"
+ {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
+#line 639 "metafns.gperf"
{"is_trivially_move_assignable_type",
METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 628 "metafns.gperf"
+#line 506 "metafns.gperf"
+ {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
+#line 636 "metafns.gperf"
{"is_trivially_move_constructible_type",
METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 514 "metafns.gperf"
- {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
-#line 486 "metafns.gperf"
+#line 605 "metafns.gperf"
+ {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 481 "metafns.gperf"
+ {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
+#line 526 "metafns.gperf"
+ {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER,
METAFN_KIND_BOOL_INFO,},
+#line 507 "metafns.gperf"
+ {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE,
METAFN_KIND_BOOL_INFO,},
+#line 599 "metafns.gperf"
+ {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 550 "metafns.gperf"
+ {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
+#line 545 "metafns.gperf"
+ {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER,
METAFN_KIND_BOOL_INFO,},
+#line 542 "metafns.gperf"
+ {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING,
METAFN_KIND_BOOL_INFO,},
+#line 495 "metafns.gperf"
+ {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
+#line 637 "metafns.gperf"
+ {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 624 "metafns.gperf"
+ {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 527 "metafns.gperf"
+ {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
METAFN_KIND_BOOL_INFO,},
+#line 673 "metafns.gperf"
+ {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
+#line 563 "metafns.gperf"
+ {"current_class", METAFN_CURRENT_CLASS, METAFN_KIND_INFO_VOID,},
+#line 570 "metafns.gperf"
+ {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
+#line 491 "metafns.gperf"
{"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
-#line 536 "metafns.gperf"
+#line 541 "metafns.gperf"
{"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
-#line 608 "metafns.gperf"
- {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 520 "metafns.gperf"
- {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 587 "metafns.gperf"
+#line 472 "metafns.gperf"
+ {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF,
METAFN_KIND_U8STRING_VIEW_INFO,},
+#line 595 "metafns.gperf"
{"is_member_function_pointer_type",
METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 596 "metafns.gperf"
+#line 652 "metafns.gperf"
+ {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR,
METAFN_KIND_BOOL_TINFO,},
+#line 655 "metafns.gperf"
+ {"reference_converts_from_temporary",
METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 519 "metafns.gperf"
+ {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
+#line 604 "metafns.gperf"
{"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 569 "metafns.gperf"
- {"substitute", METAFN_SUBSTITUTE,
METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 585 "metafns.gperf"
- {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 666 "metafns.gperf"
- {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
-#line 570 "metafns.gperf"
+#line 578 "metafns.gperf"
{"reflect_constant", METAFN_REFLECT_CONSTANT,
METAFN_KIND_INFO_TEMPLATE_PARM,},
-#line 629 "metafns.gperf"
- {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 475 "metafns.gperf"
- {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 493 "metafns.gperf"
- {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION,
METAFN_KIND_BOOL_INFO,},
-#line 668 "metafns.gperf"
+#line 525 "metafns.gperf"
+ {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
+#line 482 "metafns.gperf"
+ {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
+#line 654 "metafns.gperf"
+ {"reference_constructs_from_temporary",
METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
+#line 557 "metafns.gperf"
+ {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
+#line 676 "metafns.gperf"
{"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE,
METAFN_KIND_INFO_TINFO,},
-#line 584 "metafns.gperf"
- {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 562 "metafns.gperf"
- {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 624 "metafns.gperf"
- {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 549 "metafns.gperf"
+#line 476 "metafns.gperf"
+ {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
+#line 671 "metafns.gperf"
+ {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
+#line 640 "metafns.gperf"
+ {"is_trivially_destructible_type",
METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 674 "metafns.gperf"
+ {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
+#line 616 "metafns.gperf"
+ {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 581 "metafns.gperf"
+ {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING,
METAFN_KIND_INFO_INPUT_RANGE,},
+#line 554 "metafns.gperf"
{"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF,
METAFN_KIND_VECTOR_INFO_INFO,},
-#line 657 "metafns.gperf"
+#line 569 "metafns.gperf"
+ {"subobjects_of", METAFN_SUBOBJECTS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
+#line 571 "metafns.gperf"
+ {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
+#line 634 "metafns.gperf"
+ {"is_trivially_default_constructible_type",
METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 675 "metafns.gperf"
+ {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
+#line 534 "metafns.gperf"
+ {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
+#line 679 "metafns.gperf"
+ {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
+#line 665 "metafns.gperf"
{"is_invocable_type", METAFN_IS_INVOCABLE_TYPE,
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 664 "metafns.gperf"
+#line 622 "metafns.gperf"
+ {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 546 "metafns.gperf"
+ {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
+#line 672 "metafns.gperf"
{"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
-#line 529 "metafns.gperf"
- {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 604 "metafns.gperf"
- {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 632 "metafns.gperf"
- {"is_trivially_destructible_type",
METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
+ {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 598 "metafns.gperf"
+ {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 680 "metafns.gperf"
+ {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
+#line 666 "metafns.gperf"
+ {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
+#line 558 "metafns.gperf"
+ {"is_accessible", METAFN_IS_ACCESSIBLE,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 465 "metafns.gperf"
+ {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
+#line 590 "metafns.gperf"
+ {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 669 "metafns.gperf"
+ {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
+#line 497 "metafns.gperf"
+ {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED,
METAFN_KIND_BOOL_INFO,},
#line 498 "metafns.gperf"
+ {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION,
METAFN_KIND_BOOL_INFO,},
+#line 681 "metafns.gperf"
+ {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS,
METAFN_KIND_INFO_TINFO,},
+#line 503 "metafns.gperf"
{"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE,
METAFN_KIND_BOOL_INFO,},
-#line 553 "metafns.gperf"
- {"is_accessible", METAFN_IS_ACCESSIBLE,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 658 "metafns.gperf"
- {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 652 "metafns.gperf"
+#line 684 "metafns.gperf"
+ {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
+#line 492 "metafns.gperf"
+ {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
+#line 682 "metafns.gperf"
+ {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
+#line 496 "metafns.gperf"
+ {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED,
METAFN_KIND_BOOL_INFO,},
+#line 660 "metafns.gperf"
{"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 601 "metafns.gperf"
- {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 573 "metafns.gperf"
- {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING,
METAFN_KIND_INFO_INPUT_RANGE,},
-#line 626 "metafns.gperf"
- {"is_trivially_default_constructible_type",
METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 532 "metafns.gperf"
- {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 460 "metafns.gperf"
- {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
-#line 610 "metafns.gperf"
+#line 584 "metafns.gperf"
+ {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC,
METAFN_KIND_BOOL_INFO,},
+#line 618 "metafns.gperf"
{"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 614 "metafns.gperf"
- {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 622 "metafns.gperf"
- {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE,
METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 561 "metafns.gperf"
- {"subobjects_of", METAFN_SUBOBJECTS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 563 "metafns.gperf"
- {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
-#line 537 "metafns.gperf"
- {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING,
METAFN_KIND_BOOL_INFO,},
-#line 478 "metafns.gperf"
- {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
-#line 511 "metafns.gperf"
- {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR,
METAFN_KIND_BOOL_INFO,},
-#line 671 "metafns.gperf"
- {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
-#line 467 "metafns.gperf"
- {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF,
METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 644 "metafns.gperf"
- {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR,
METAFN_KIND_BOOL_TINFO,},
-#line 600 "metafns.gperf"
- {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 483 "metafns.gperf"
- {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
-#line 576 "metafns.gperf"
- {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC,
METAFN_KIND_BOOL_INFO,},
-#line 501 "metafns.gperf"
- {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 487 "metafns.gperf"
- {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
-#line 591 "metafns.gperf"
- {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 552 "metafns.gperf"
- {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 479 "metafns.gperf"
- {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
-#line 471 "metafns.gperf"
- {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
-#line 665 "metafns.gperf"
- {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
+ {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 480 "metafns.gperf"
- {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
-#line 645 "metafns.gperf"
- {"has_unique_object_representations",
METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
-#line 586 "metafns.gperf"
- {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 466 "metafns.gperf"
+ {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
+#line 471 "metafns.gperf"
{"display_string_of", METAFN_DISPLAY_STRING_OF,
METAFN_KIND_STRING_VIEW_INFO,},
-#line 522 "metafns.gperf"
- {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
METAFN_KIND_BOOL_INFO,},
-#line 541 "metafns.gperf"
- {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 470 "metafns.gperf"
- {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
-#line 609 "metafns.gperf"
+#line 594 "metafns.gperf"
+ {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 691 "metafns.gperf"
+ {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
+#line 617 "metafns.gperf"
{"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 477 "metafns.gperf"
- {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
-#line 663 "metafns.gperf"
- {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
-#line 571 "metafns.gperf"
- {"reflect_object", METAFN_REFLECT_OBJECT,
METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 581 "metafns.gperf"
+#line 606 "metafns.gperf"
+ {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 467 "metafns.gperf"
+ {"u8symbol_of", METAFN_U8SYMBOL_OF,
METAFN_KIND_U8STRING_VIEW_OPERATORS,},
+#line 484 "metafns.gperf"
+ {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
+#line 589 "metafns.gperf"
{"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 463 "metafns.gperf"
- {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
-#line 667 "metafns.gperf"
- {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 555 "metafns.gperf"
- {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 499 "metafns.gperf"
- {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE,
METAFN_KIND_BOOL_INFO,},
-#line 556 "metafns.gperf"
- {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 672 "metafns.gperf"
- {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
-#line 554 "metafns.gperf"
- {"has_inaccessible_nonstatic_data_members",
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 492 "metafns.gperf"
- {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED,
METAFN_KIND_BOOL_INFO,},
-#line 647 "metafns.gperf"
- {"reference_converts_from_temporary",
METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 590 "metafns.gperf"
- {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 482 "metafns.gperf"
- {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
-#line 575 "metafns.gperf"
- {"data_member_spec", METAFN_DATA_MEMBER_SPEC,
METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
-#line 491 "metafns.gperf"
- {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED,
METAFN_KIND_BOOL_INFO,},
-#line 494 "metafns.gperf"
- {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION,
METAFN_KIND_BOOL_INFO,},
+#line 537 "metafns.gperf"
+ {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
#line 485 "metafns.gperf"
- {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
-#line 676 "metafns.gperf"
- {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
-#line 681 "metafns.gperf"
- {"invoke_result", METAFN_INVOKE_RESULT,
METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
-#line 547 "metafns.gperf"
+ {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
+#line 583 "metafns.gperf"
+ {"data_member_spec", METAFN_DATA_MEMBER_SPEC,
METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
+#line 475 "metafns.gperf"
+ {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
+#line 700 "metafns.gperf"
+ {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8,
METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
+#line 701 "metafns.gperf"
+ {"_S_exception_cvt_from_utf8",
METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
+#line 483 "metafns.gperf"
+ {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
+#line 516 "metafns.gperf"
+ {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR,
METAFN_KIND_BOOL_INFO,},
+#line 487 "metafns.gperf"
+ {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
+#line 552 "metafns.gperf"
{"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS,
METAFN_KIND_BOOL_INFO,},
-#line 510 "metafns.gperf"
+#line 515 "metafns.gperf"
{"is_operator_function", METAFN_IS_OPERATOR_FUNCTION,
METAFN_KIND_BOOL_INFO,},
-#line 674 "metafns.gperf"
- {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 546 "metafns.gperf"
- {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
-#line 661 "metafns.gperf"
- {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
-#line 531 "metafns.gperf"
- {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 646 "metafns.gperf"
- {"reference_constructs_from_temporary",
METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 673 "metafns.gperf"
- {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS,
METAFN_KIND_INFO_TINFO,},
+#line 689 "metafns.gperf"
+ {"invoke_result", METAFN_INVOKE_RESULT,
METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
#line 582 "metafns.gperf"
- {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 496 "metafns.gperf"
- {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE,
METAFN_KIND_BOOL_INFO,},
-#line 670 "metafns.gperf"
- {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
-#line 559 "metafns.gperf"
- {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 598 "metafns.gperf"
- {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 606 "metafns.gperf"
- {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 577 "metafns.gperf"
- {"define_aggregate", METAFN_DEFINE_AGGREGATE,
METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 692 "metafns.gperf"
- {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8,
METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
-#line 693 "metafns.gperf"
- {"_S_exception_cvt_from_utf8",
METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
-#line 613 "metafns.gperf"
- {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 603 "metafns.gperf"
- {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 683 "metafns.gperf"
- {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 574 "metafns.gperf"
{"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY,
METAFN_KIND_INFO_INPUT_RANGE,},
-#line 462 "metafns.gperf"
- {"u8symbol_of", METAFN_U8SYMBOL_OF,
METAFN_KIND_U8STRING_VIEW_OPERATORS,},
-#line 580 "metafns.gperf"
+#line 504 "metafns.gperf"
+ {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE,
METAFN_KIND_BOOL_INFO,},
+#line 536 "metafns.gperf"
+ {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
+#line 588 "metafns.gperf"
{"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 653 "metafns.gperf"
+ {"has_unique_object_representations",
METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
+#line 499 "metafns.gperf"
+ {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION,
METAFN_KIND_BOOL_INFO,},
#line 560 "metafns.gperf"
- {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 607 "metafns.gperf"
- {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 662 "metafns.gperf"
+ {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 561 "metafns.gperf"
+ {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS,
METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 678 "metafns.gperf"
+ {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
+#line 559 "metafns.gperf"
+ {"has_inaccessible_nonstatic_data_members",
METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
+#line 670 "metafns.gperf"
{"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 565 "metafns.gperf"
- {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
+#line 579 "metafns.gperf"
+ {"reflect_object", METAFN_REFLECT_OBJECT,
METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
+#line 611 "metafns.gperf"
+ {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 685 "metafns.gperf"
+ {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
+#line 621 "metafns.gperf"
+ {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE,
METAFN_KIND_BOOL_TINFO,},
+#line 568 "metafns.gperf"
+ {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
+#line 597 "metafns.gperf"
+ {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 468 "metafns.gperf"
- {"source_location_of", METAFN_SOURCE_LOCATION_OF,
METAFN_KIND_SOURCE_LOCATION_INFO,},
-#line 690 "metafns.gperf"
+ {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
+#line 567 "metafns.gperf"
+ {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
+#line 615 "metafns.gperf"
+ {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 551 "metafns.gperf"
+ {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
+#line 698 "metafns.gperf"
{"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE,
METAFN_KIND_VECTOR_INFO_INFO_INFO,},
-#line 465 "metafns.gperf"
- {"u8identifier_of", METAFN_U8IDENTIFIER_OF,
METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 677 "metafns.gperf"
- {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 689 "metafns.gperf"
+#line 585 "metafns.gperf"
+ {"define_aggregate", METAFN_DEFINE_AGGREGATE,
METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
+#line 490 "metafns.gperf"
+ {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
+#line 697 "metafns.gperf"
{"annotations_of", METAFN_ANNOTATIONS_OF,
METAFN_KIND_VECTOR_INFO_INFO,},
-#line 589 "metafns.gperf"
- {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 481 "metafns.gperf"
- {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},
-#line 611 "metafns.gperf"
- {"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,}
+#line 473 "metafns.gperf"
+ {"source_location_of", METAFN_SOURCE_LOCATION_OF,
METAFN_KIND_SOURCE_LOCATION_INFO,},
+#line 573 "metafns.gperf"
+ {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
+#line 501 "metafns.gperf"
+ {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE,
METAFN_KIND_BOOL_INFO,},
+#line 470 "metafns.gperf"
+ {"u8identifier_of", METAFN_U8IDENTIFIER_OF,
METAFN_KIND_U8STRING_VIEW_INFO,},
+#line 619 "metafns.gperf"
+ {"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
+#line 486 "metafns.gperf"
+ {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}
};
#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__
&& __clang_major__ >= 3)
#pragma GCC diagnostic pop
@@ -1076,81 +1087,71 @@ metafn_lookup::find (const char *str, si
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
-1, -1, 1, -1, -1, 2, 3, -1, 4, -1,
- -1, -1, 5, -1, -1, -1, 6, 7, -1, 8,
- 9, 10, 11, -1, 12, 13, 14, -1, -1, 15,
- 16, -1, -1, -1, -1, 17, -1, -1, -1, 18,
- -1, 19, 20, -1, 21, -1, -1, -1, -1, 22,
- 23, 24, 25, -1, -1, 26, 27, -1, 28, -1,
- 29, -1, 30, 31, -1, 32, -1, -1, -1, -1,
- 33, 34, 35, 36, 37, 38, -1, -1, -1, -1,
- -1, 39, 40, -1, 41, -1, 42, -1, -1, 43,
- -1, 44, 45, -1, -1, -1, -1, 46, -1, -1,
- -1, -1, -1, -1, -1, -1, 47, 48, 49, -1,
- 50, -1, -1, 51, 52, -1, 53, 54, 55, 56,
- 57, 58, -1, 59, -1, -1, -1, 60, -1, -1,
- -1, 61, -1, 62, -1, 63, 64, 65, 66, -1,
- -1, 67, -1, -1, -1, -1, -1, 68, -1, -1,
- -1, 69, 70, -1, 71, -1, -1, 72, -1, -1,
- 73, -1, 74, 75, -1, 76, -1, 77, 78, -1,
- -1, -1, -1, 79, 80, -1, -1, -1, 81, -1,
- -1, -1, 82, 83, -1, -1, -1, -1, 84, -1,
- 85, 86, -1, 87, 88, 89, 90, -1, 91, -1,
- -1, 92, -1, -1, -1, -1, 93, 94, -1, -1,
- -1, 95, 96, -1, -1, -1, 97, 98, -1, -1,
- -1, -1, -1, -1, 99, -1, 100, -1, 101, -1,
- -1, -1, -1, 102, 103, 104, 105, -1, -1, 106,
- 107, 108, -1, -1, -1, -1, -1, -1, 109, 110,
- 111, -1, 112, 113, -1, -1, -1, -1, 114, -1,
- -1, 115, 116, 117, 118, -1, -1, -1, -1, 119,
- -1, -1, -1, 120, -1, -1, 121, -1, -1, 122,
- 123, -1, -1, 124, -1, -1, 125, -1, -1, -1,
- -1, 126, -1, 127, -1, -1, -1, -1, 128, 129,
- 130, -1, -1, 131, 132, 133, 134, 135, -1, 136,
- -1, -1, 137, -1, 138, 139, -1, 140, 141, 142,
- -1, 143, 144, 145, 146, -1, 147, -1, -1, -1,
- -1, 148, 149, -1, 150, -1, 151, -1, 152, 153,
- -1, 154, -1, -1, -1, -1, 155, 156, 157, 158,
- -1, -1, -1, 159, 160, -1, -1, 161, -1, 162,
- -1, -1, 163, 164, -1, -1, -1, -1, -1, -1,
- -1, -1, 165, -1, 166, 167, 168, -1, -1, -1,
- -1, 169, 170, 171, 172, -1, -1, 173, -1, -1,
- -1, -1, -1, -1, 174, -1, 175, -1, -1, 176,
- -1, -1, 177, -1, -1, 178, -1, -1, -1, -1,
- -1, -1, -1, 179, -1, -1, -1, 180, -1, -1,
- -1, -1, 181, -1, 182, 183, -1, 184, -1, 185,
- -1, -1, 186, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 187, -1, 188, -1, -1, -1, 189, 190,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 191,
- -1, 192, -1, -1, -1, -1, 193, -1, 194, 195,
- 196, 197, -1, 198, -1, -1, -1, -1, -1, 199,
- 200, -1, -1, 201, -1, -1, -1, -1, -1, -1,
- 202, 203, -1, -1, 204, -1, -1, -1, -1, -1,
- -1, 205, 206, -1, -1, -1, -1, -1, -1, 207,
- 208, 209, -1, -1, -1, 210, -1, -1, -1, -1,
- -1, -1, 211, -1, -1, -1, -1, 212, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 213, -1, -1, -1, 214, -1, 215, 216, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 217, -1,
- -1, -1, -1, -1, -1, -1, -1, 218, -1, -1,
- -1, -1, -1, 219, -1, -1, -1, 220, -1, -1,
- -1, -1, 221, -1, -1, -1, -1, -1, -1, -1,
- 222, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 223, -1, -1, -1, -1, -1, -1, 224,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 225, -1, -1, -1, -1, -1, 226, -1,
- -1, -1, -1, -1, 227, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 228, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 229, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 230, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 231,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 232, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 5, -1, -1, 6, 7, 8, -1, 9,
+ 10, 11, 12, -1, 13, 14, 15, 16, -1, 17,
+ 18, -1, -1, -1, -1, 19, 20, -1, 21, 22,
+ -1, 23, 24, -1, 25, -1, -1, -1, -1, 26,
+ -1, 27, 28, -1, 29, 30, 31, 32, 33, -1,
+ 34, -1, 35, 36, -1, -1, -1, -1, -1, -1,
+ 37, -1, 38, 39, 40, 41, -1, -1, -1, -1,
+ 42, 43, 44, -1, 45, -1, 46, -1, 47, -1,
+ -1, 48, 49, -1, -1, -1, -1, 50, -1, -1,
+ -1, -1, -1, 51, -1, -1, 52, 53, 54, -1,
+ -1, -1, -1, 55, 56, 57, 58, -1, 59, -1,
+ -1, 60, -1, -1, 61, 62, -1, 63, -1, -1,
+ -1, 64, -1, 65, -1, -1, 66, -1, 67, -1,
+ -1, 68, -1, 69, -1, -1, 70, -1, -1, -1,
+ 71, -1, -1, 72, 73, 74, 75, -1, -1, -1,
+ 76, 77, 78, -1, 79, 80, 81, 82, 83, -1,
+ 84, 85, 86, -1, -1, 87, -1, -1, 88, 89,
+ 90, 91, -1, -1, -1, -1, 92, -1, 93, 94,
+ 95, 96, -1, 97, 98, 99, -1, -1, 100, 101,
+ 102, -1, -1, -1, -1, -1, -1, 103, -1, -1,
+ -1, 104, -1, 105, -1, 106, 107, -1, 108, -1,
+ 109, 110, 111, -1, -1, -1, 112, 113, -1, 114,
+ -1, 115, -1, 116, 117, -1, 118, -1, -1, 119,
+ 120, 121, 122, -1, 123, -1, -1, -1, 124, 125,
+ -1, -1, -1, -1, -1, -1, 126, -1, -1, -1,
+ -1, -1, 127, 128, 129, -1, 130, 131, -1, -1,
+ -1, -1, -1, 132, 133, -1, -1, 134, 135, 136,
+ -1, 137, 138, -1, -1, -1, 139, 140, -1, -1,
+ -1, -1, -1, 141, -1, -1, 142, -1, 143, -1,
+ 144, -1, -1, 145, 146, 147, 148, -1, 149, -1,
+ 150, 151, 152, 153, -1, -1, 154, 155, 156, 157,
+ 158, -1, 159, 160, -1, -1, 161, -1, -1, 162,
+ -1, 163, -1, -1, 164, 165, 166, 167, 168, -1,
+ -1, -1, -1, 169, -1, 170, 171, -1, -1, -1,
+ -1, 172, -1, -1, 173, -1, 174, -1, -1, -1,
+ -1, -1, 175, -1, -1, 176, 177, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 178, 179, 180,
+ -1, -1, -1, -1, 181, -1, -1, -1, -1, 182,
+ -1, -1, -1, -1, -1, 183, -1, -1, -1, 184,
+ -1, 185, 186, 187, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 188, -1, 189, -1, -1, 190,
+ -1, -1, -1, -1, 191, 192, 193, -1, -1, 194,
+ -1, -1, 195, -1, -1, -1, 196, -1, 197, -1,
+ -1, 198, -1, 199, -1, -1, -1, -1, -1, 200,
+ 201, 202, 203, -1, 204, -1, -1, 205, -1, -1,
+ 206, -1, 207, -1, -1, -1, -1, -1, 208, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 209, -1, -1, -1, -1, -1, 210,
+ -1, 211, -1, -1, -1, -1, -1, -1, 212, -1,
+ -1, -1, -1, 213, -1, -1, -1, -1, -1, -1,
+ -1, 214, -1, -1, -1, 215, -1, -1, -1, 216,
+ 217, -1, -1, 218, -1, -1, -1, -1, 219, -1,
+ -1, -1, -1, -1, -1, -1, -1, 220, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 221, -1, -1, -1, -1,
+ 222, -1, -1, -1, -1, 223, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 224, -1,
+ -1, -1, 225, 226, -1, -1, -1, -1, 227, -1,
+ 228, -1, -1, -1, -1, -1, -1, -1, 229, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 230, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 231, -1, -1, 232, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 233, -1, -1, 234,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -1160,9 +1161,10 @@ metafn_lookup::find (const char *str, si
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 235, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 233
+ 236
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
Jakub