2026-03-28 Jakub Jelinek <[email protected]>
gcc/cp/
* metafns.gperf (enum metafn_code): Remove
METAFN_HAS_ELLIPSIS_PARAMETER, add METAFN_IS_VARARG_FUNCTION.
(has_ellipsis_parameter): Remove.
(is_vararg_function): Add.
* reflect.cc (eval_has_ellipsis_parameter): Rename to ...
(eval_is_vararg_function): ... this. Adjust function comment.
(process_metafunction): Handle METAFN_IS_VARARG_FUNCTION
instead of METAFN_HAS_ELLIPSIS_PARAMETER.
* metafns.h: Regenerate.
gcc/testsuite/
* g++.dg/reflect/has_ellipsis_parameter1.C: Rename to ...
* g++.dg/reflect/is_vararg_function1.C: this. New test. Rename
has_ellipsis_parameter to is_vararg_function everywhere.
libstdc++-v3/
* include/std/meta (has_ellipsis_parameter): Rename to ...
(is_vararg_function): ... this. New declaration.
* src/c++23/std.cc.in: Remove std::meta::has_ellipsis_parameter
export, add std::meta::is_vararg_function export.
--- libstdc++-v3/include/std/meta.jj 2026-03-27 18:34:12.497773682 +0100
+++ libstdc++-v3/include/std/meta 2026-03-27 18:35:27.617529247 +0100
@@ -273,7 +273,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
consteval bool is_function_parameter(info);
consteval bool is_explicit_object_parameter(info);
consteval bool has_default_argument(info);
- consteval bool has_ellipsis_parameter(info);
+ consteval bool is_vararg_function(info);
consteval bool is_template(info);
consteval bool is_function_template(info);
--- libstdc++-v3/src/c++23/std.cc.in.jj 2026-03-27 18:34:12.497773682 +0100
+++ libstdc++-v3/src/c++23/std.cc.in 2026-03-27 18:35:44.631247398 +0100
@@ -2161,7 +2161,7 @@ export namespace std
using std::meta::is_function_parameter;
using std::meta::is_explicit_object_parameter;
using std::meta::has_default_argument;
- using std::meta::has_ellipsis_parameter;
+ using std::meta::is_vararg_function;
using std::meta::is_template;
using std::meta::is_function_template;
using std::meta::is_variable_template;
--- gcc/cp/metafns.gperf.jj 2026-03-27 18:34:12.491773781 +0100
+++ gcc/cp/metafns.gperf 2026-03-27 18:36:38.861349024 +0100
@@ -86,7 +86,7 @@ enum metafn_code {
METAFN_IS_FUNCTION_PARAMETER,
METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
METAFN_HAS_DEFAULT_ARGUMENT,
- METAFN_HAS_ELLIPSIS_PARAMETER,
+ METAFN_IS_VARARG_FUNCTION,
METAFN_IS_TEMPLATE,
METAFN_IS_FUNCTION_TEMPLATE,
METAFN_IS_VARIABLE_TEMPLATE,
@@ -521,7 +521,7 @@ is_destructor, METAFN_IS_DESTRUCTOR, MET
is_function_parameter, METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,
is_explicit_object_parameter, METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
METAFN_KIND_BOOL_INFO,
has_default_argument, METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,
-has_ellipsis_parameter, METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,
+is_vararg_function, METAFN_IS_VARARG_FUNCTION, METAFN_KIND_BOOL_INFO,
is_template, METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,
is_function_template, METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,
is_variable_template, METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,
--- gcc/cp/reflect.cc.jj 2026-03-27 18:34:12.495773715 +0100
+++ gcc/cp/reflect.cc 2026-03-28 12:24:18.968719205 +0100
@@ -1759,12 +1759,12 @@ eval_has_default_argument (tree r, refle
return boolean_false_node;
}
-/* Process std::meta::has_ellipsis_parameter.
- Returns: true if r represents a function or function type that has an
- ellipsis in its parameter-type-list. Otherwise, false. */
+/* Process std::meta::is_vararg_function.
+ Returns: true if r represents a function or function type that
+ is a vararg function. Otherwise, false. */
static tree
-eval_has_ellipsis_parameter (tree r)
+eval_is_vararg_function (tree r)
{
r = MAYBE_BASELINK_FUNCTIONS (r);
if (TREE_CODE (r) == FUNCTION_DECL)
@@ -7612,8 +7612,8 @@ process_metafunction (const constexpr_ct
return eval_is_explicit_object_parameter (h, kind);
case METAFN_HAS_DEFAULT_ARGUMENT:
return eval_has_default_argument (h, kind);
- case METAFN_HAS_ELLIPSIS_PARAMETER:
- return eval_has_ellipsis_parameter (h);
+ case METAFN_IS_VARARG_FUNCTION:
+ return eval_is_vararg_function (h);
case METAFN_IS_TEMPLATE:
return eval_is_template (h);
case METAFN_IS_FUNCTION_TEMPLATE:
--- gcc/testsuite/g++.dg/reflect/has_ellipsis_parameter1.C.jj 2026-03-27
10:17:16.125298250 +0100
+++ gcc/testsuite/g++.dg/reflect/has_ellipsis_parameter1.C 2026-03-28
12:25:05.023941440 +0100
@@ -1,148 +0,0 @@
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-// Test std::meta::has_ellipsis_parameter.
-
-#include <meta>
-
-using namespace std::meta;
-
-constexpr info null_reflection;
-struct cls {
- int dm;
- static int static_dm;
- void mem_fun ();
- void mem_fun2 (int, ...);
- void mem_fun3 (...);
- void mem_fun4 (int);
- static void static_mem_fun ();
- static void static_mem_fun2 (int, long, ...);
- static void static_mem_fun3 (...);
- static void static_mem_fun4 (long);
- int &ref_dm = dm;
- using type = int;
-} cls_var;
-union onion { };
-static union { int anon; };
-using alias = cls;
-void fun ();
-void fun2 (int, ...);
-void fun3 (...);
-void fun4 (int, int);
-int var;
-int &ref = var;
-int &&rref = 42;
-int *ptr = &var;
-namespace ns {}
-namespace ns_alias = ns;
-enum Enum { A };
-enum class Enum_class { A };
-using funt = int ();
-using funt2 = int (int, ...);
-using funt3 = int (...);
-using funt4 = int (int, long);
-
-template<typename> struct incomplete_cls;
-template<typename> struct cls_tmpl {};
-template<typename> void fun_tmpl ();
-template<typename> void fun_tmpl2 (int, ...);
-template<typename> void fun_tmpl3 (...);
-template<typename> void fun_tmpl4 (long, int);
-template<typename> concept conc = requires { true; };
-template<typename> int var_tmpl;
-template<typename T> using cls_tmpl_alias = cls_tmpl<T>;
-
-int arr[] = { 42 };
-using inc_arr = int[];
-using com_arr = int[42];
-auto [ decomp ] = arr;
-auto &[ decomp_ref ] = arr;
-
-static_assert (!has_ellipsis_parameter (null_reflection));
-static_assert (!has_ellipsis_parameter (^^::));
-static_assert (!has_ellipsis_parameter (^^ns));
-static_assert (!has_ellipsis_parameter (^^ns_alias));
-static_assert (!has_ellipsis_parameter (reflect_constant (3)));
-static_assert (!has_ellipsis_parameter (^^cls));
-static_assert (!has_ellipsis_parameter (^^cls::dm));
-static_assert (!has_ellipsis_parameter (^^cls::ref_dm));
-static_assert (!has_ellipsis_parameter (^^cls::static_dm));
-static_assert (!has_ellipsis_parameter (^^cls::mem_fun));
-static_assert (has_ellipsis_parameter (^^cls::mem_fun2));
-static_assert (has_ellipsis_parameter (^^cls::mem_fun3));
-static_assert (!has_ellipsis_parameter (^^cls::mem_fun4));
-static_assert (!has_ellipsis_parameter (^^cls::static_mem_fun));
-static_assert (has_ellipsis_parameter (^^cls::static_mem_fun2));
-static_assert (has_ellipsis_parameter (^^cls::static_mem_fun3));
-static_assert (!has_ellipsis_parameter (^^cls::static_mem_fun4));
-static_assert (!has_ellipsis_parameter (^^cls::type));
-static_assert (!has_ellipsis_parameter (^^cls_var));
-static_assert (!has_ellipsis_parameter (^^onion));
-static_assert (!has_ellipsis_parameter (^^anon));
-static_assert (!has_ellipsis_parameter (^^fun));
-static_assert (has_ellipsis_parameter (^^fun2));
-static_assert (has_ellipsis_parameter (^^fun3));
-static_assert (!has_ellipsis_parameter (^^fun4));
-static_assert (!has_ellipsis_parameter (type_of (^^fun)));
-static_assert (has_ellipsis_parameter (type_of (^^fun2)));
-static_assert (has_ellipsis_parameter (type_of (^^fun3)));
-static_assert (!has_ellipsis_parameter (type_of (^^fun4)));
-static_assert (!has_ellipsis_parameter (^^alias));
-static_assert (!has_ellipsis_parameter (^^var));
-static_assert (!has_ellipsis_parameter (^^ref));
-static_assert (!has_ellipsis_parameter (^^rref));
-static_assert (!has_ellipsis_parameter (^^ptr));
-static_assert (!has_ellipsis_parameter (^^cls_tmpl));
-static_assert (!has_ellipsis_parameter (^^cls_tmpl<int>));
-static_assert (!has_ellipsis_parameter (^^incomplete_cls<int>));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl<int>));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl2));
-static_assert (has_ellipsis_parameter (^^fun_tmpl2<int>));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl3));
-static_assert (has_ellipsis_parameter (^^fun_tmpl3<int>));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl4));
-static_assert (!has_ellipsis_parameter (^^fun_tmpl4<int>));
-static_assert (!has_ellipsis_parameter (^^conc));
-static_assert (!has_ellipsis_parameter (substitute (^^conc, { ^^int })));
-static_assert (!has_ellipsis_parameter (^^var_tmpl));
-static_assert (!has_ellipsis_parameter (^^var_tmpl<int>));
-static_assert (!has_ellipsis_parameter (^^cls_tmpl_alias));
-static_assert (!has_ellipsis_parameter (^^cls_tmpl_alias<int>));
-static_assert (!has_ellipsis_parameter (^^Enum));
-static_assert (!has_ellipsis_parameter (^^Enum::A));
-static_assert (!has_ellipsis_parameter (^^Enum_class));
-static_assert (!has_ellipsis_parameter (^^Enum_class::A));
-static_assert (!has_ellipsis_parameter (^^decomp));
-static_assert (!has_ellipsis_parameter (^^decomp_ref));
-static_assert (!has_ellipsis_parameter (^^arr));
-static_assert (!has_ellipsis_parameter (^^inc_arr));
-static_assert (!has_ellipsis_parameter (^^com_arr));
-static_assert (!has_ellipsis_parameter (^^funt));
-static_assert (has_ellipsis_parameter (^^funt2));
-static_assert (has_ellipsis_parameter (^^funt3));
-static_assert (!has_ellipsis_parameter (^^funt4));
-
-constexpr auto dms = data_member_spec (^^int, { .name = u8"a" });
-static_assert (!has_ellipsis_parameter (dms));
-
-struct Base {};
-struct Derived : Base {};
-static_assert (!has_ellipsis_parameter (bases_of (^^Derived,
access_context::unchecked ())[0]));
-
-template<typename T, info R, info R2, info R3>
-void
-f ()
-{
- static_assert (!has_ellipsis_parameter (^^T));
- static_assert (!has_ellipsis_parameter (R));
- static_assert (!has_ellipsis_parameter (R2));
- static_assert (!has_ellipsis_parameter (R3));
-}
-
-void
-g (int p, cls c)
-{
- f<int, ^^var, ^^ns, ^^cls>();
- static_assert (!has_ellipsis_parameter (^^p));
- static_assert (!has_ellipsis_parameter (^^c));
-}
--- gcc/testsuite/g++.dg/reflect/is_vararg_function1.C.jj 2026-03-28
12:25:11.272835910 +0100
+++ gcc/testsuite/g++.dg/reflect/is_vararg_function1.C 2026-03-28
12:25:25.749591435 +0100
@@ -0,0 +1,148 @@
+// { dg-do compile { target c++26 } }
+// { dg-additional-options "-freflection" }
+// Test std::meta::is_vararg_function.
+
+#include <meta>
+
+using namespace std::meta;
+
+constexpr info null_reflection;
+struct cls {
+ int dm;
+ static int static_dm;
+ void mem_fun ();
+ void mem_fun2 (int, ...);
+ void mem_fun3 (...);
+ void mem_fun4 (int);
+ static void static_mem_fun ();
+ static void static_mem_fun2 (int, long, ...);
+ static void static_mem_fun3 (...);
+ static void static_mem_fun4 (long);
+ int &ref_dm = dm;
+ using type = int;
+} cls_var;
+union onion { };
+static union { int anon; };
+using alias = cls;
+void fun ();
+void fun2 (int, ...);
+void fun3 (...);
+void fun4 (int, int);
+int var;
+int &ref = var;
+int &&rref = 42;
+int *ptr = &var;
+namespace ns {}
+namespace ns_alias = ns;
+enum Enum { A };
+enum class Enum_class { A };
+using funt = int ();
+using funt2 = int (int, ...);
+using funt3 = int (...);
+using funt4 = int (int, long);
+
+template<typename> struct incomplete_cls;
+template<typename> struct cls_tmpl {};
+template<typename> void fun_tmpl ();
+template<typename> void fun_tmpl2 (int, ...);
+template<typename> void fun_tmpl3 (...);
+template<typename> void fun_tmpl4 (long, int);
+template<typename> concept conc = requires { true; };
+template<typename> int var_tmpl;
+template<typename T> using cls_tmpl_alias = cls_tmpl<T>;
+
+int arr[] = { 42 };
+using inc_arr = int[];
+using com_arr = int[42];
+auto [ decomp ] = arr;
+auto &[ decomp_ref ] = arr;
+
+static_assert (!is_vararg_function (null_reflection));
+static_assert (!is_vararg_function (^^::));
+static_assert (!is_vararg_function (^^ns));
+static_assert (!is_vararg_function (^^ns_alias));
+static_assert (!is_vararg_function (reflect_constant (3)));
+static_assert (!is_vararg_function (^^cls));
+static_assert (!is_vararg_function (^^cls::dm));
+static_assert (!is_vararg_function (^^cls::ref_dm));
+static_assert (!is_vararg_function (^^cls::static_dm));
+static_assert (!is_vararg_function (^^cls::mem_fun));
+static_assert (is_vararg_function (^^cls::mem_fun2));
+static_assert (is_vararg_function (^^cls::mem_fun3));
+static_assert (!is_vararg_function (^^cls::mem_fun4));
+static_assert (!is_vararg_function (^^cls::static_mem_fun));
+static_assert (is_vararg_function (^^cls::static_mem_fun2));
+static_assert (is_vararg_function (^^cls::static_mem_fun3));
+static_assert (!is_vararg_function (^^cls::static_mem_fun4));
+static_assert (!is_vararg_function (^^cls::type));
+static_assert (!is_vararg_function (^^cls_var));
+static_assert (!is_vararg_function (^^onion));
+static_assert (!is_vararg_function (^^anon));
+static_assert (!is_vararg_function (^^fun));
+static_assert (is_vararg_function (^^fun2));
+static_assert (is_vararg_function (^^fun3));
+static_assert (!is_vararg_function (^^fun4));
+static_assert (!is_vararg_function (type_of (^^fun)));
+static_assert (is_vararg_function (type_of (^^fun2)));
+static_assert (is_vararg_function (type_of (^^fun3)));
+static_assert (!is_vararg_function (type_of (^^fun4)));
+static_assert (!is_vararg_function (^^alias));
+static_assert (!is_vararg_function (^^var));
+static_assert (!is_vararg_function (^^ref));
+static_assert (!is_vararg_function (^^rref));
+static_assert (!is_vararg_function (^^ptr));
+static_assert (!is_vararg_function (^^cls_tmpl));
+static_assert (!is_vararg_function (^^cls_tmpl<int>));
+static_assert (!is_vararg_function (^^incomplete_cls<int>));
+static_assert (!is_vararg_function (^^fun_tmpl));
+static_assert (!is_vararg_function (^^fun_tmpl<int>));
+static_assert (!is_vararg_function (^^fun_tmpl2));
+static_assert (is_vararg_function (^^fun_tmpl2<int>));
+static_assert (!is_vararg_function (^^fun_tmpl3));
+static_assert (is_vararg_function (^^fun_tmpl3<int>));
+static_assert (!is_vararg_function (^^fun_tmpl4));
+static_assert (!is_vararg_function (^^fun_tmpl4<int>));
+static_assert (!is_vararg_function (^^conc));
+static_assert (!is_vararg_function (substitute (^^conc, { ^^int })));
+static_assert (!is_vararg_function (^^var_tmpl));
+static_assert (!is_vararg_function (^^var_tmpl<int>));
+static_assert (!is_vararg_function (^^cls_tmpl_alias));
+static_assert (!is_vararg_function (^^cls_tmpl_alias<int>));
+static_assert (!is_vararg_function (^^Enum));
+static_assert (!is_vararg_function (^^Enum::A));
+static_assert (!is_vararg_function (^^Enum_class));
+static_assert (!is_vararg_function (^^Enum_class::A));
+static_assert (!is_vararg_function (^^decomp));
+static_assert (!is_vararg_function (^^decomp_ref));
+static_assert (!is_vararg_function (^^arr));
+static_assert (!is_vararg_function (^^inc_arr));
+static_assert (!is_vararg_function (^^com_arr));
+static_assert (!is_vararg_function (^^funt));
+static_assert (is_vararg_function (^^funt2));
+static_assert (is_vararg_function (^^funt3));
+static_assert (!is_vararg_function (^^funt4));
+
+constexpr auto dms = data_member_spec (^^int, { .name = u8"a" });
+static_assert (!is_vararg_function (dms));
+
+struct Base {};
+struct Derived : Base {};
+static_assert (!is_vararg_function (bases_of (^^Derived,
access_context::unchecked ())[0]));
+
+template<typename T, info R, info R2, info R3>
+void
+f ()
+{
+ static_assert (!is_vararg_function (^^T));
+ static_assert (!is_vararg_function (R));
+ static_assert (!is_vararg_function (R2));
+ static_assert (!is_vararg_function (R3));
+}
+
+void
+g (int p, cls c)
+{
+ f<int, ^^var, ^^ns, ^^cls>();
+ static_assert (!is_vararg_function (^^p));
+ static_assert (!is_vararg_function (^^c));
+}
--- gcc/cp/metafns.h.jj 2026-03-27 18:34:12.491773781 +0100
+++ gcc/cp/metafns.h 2026-03-27 18:36:49.234174196 +0100
@@ -114,7 +114,7 @@ enum metafn_code {
METAFN_IS_FUNCTION_PARAMETER,
METAFN_IS_EXPLICIT_OBJECT_PARAMETER,
METAFN_HAS_DEFAULT_ARGUMENT,
- METAFN_HAS_ELLIPSIS_PARAMETER,
+ METAFN_IS_VARARG_FUNCTION,
METAFN_IS_TEMPLATE,
METAFN_IS_FUNCTION_TEMPLATE,
METAFN_IS_VARIABLE_TEMPLATE,
@@ -511,7 +511,7 @@ metafn_lookup::hash (const char *str, si
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, 20, 918, 918, 918, 918, 918, 918, 918,
+ 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,
@@ -630,12 +630,8 @@ metafn_lookup::find (const char *str, si
{"is_nothrow_move_constructible_type",
METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 527 "metafns.gperf"
{"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE,
METAFN_KIND_BOOL_INFO,},
-#line 686 "metafns.gperf"
- {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
#line 579 "metafns.gperf"
{"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE,
METAFN_KIND_BOOL_TINFO,},
-#line 504 "metafns.gperf"
- {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
#line 472 "metafns.gperf"
{"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
#line 484 "metafns.gperf"
@@ -690,6 +686,10 @@ metafn_lookup::find (const char *str, si
{"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
#line 617 "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"
{"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE,
METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 495 "metafns.gperf"
@@ -698,8 +698,8 @@ metafn_lookup::find (const char *str, si
{"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 506 "metafns.gperf"
- {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
+#line 524 "metafns.gperf"
+ {"is_vararg_function", METAFN_IS_VARARG_FUNCTION,
METAFN_KIND_BOOL_INFO,},
#line 515 "metafns.gperf"
{"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR,
METAFN_KIND_BOOL_INFO,},
#line 551 "metafns.gperf"
@@ -754,8 +754,8 @@ metafn_lookup::find (const char *str, si
{"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 524 "metafns.gperf"
- {"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER,
METAFN_KIND_BOOL_INFO,},
+#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"
@@ -1042,8 +1042,6 @@ metafn_lookup::find (const char *str, si
{"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 560 "metafns.gperf"
{"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF,
METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 677 "metafns.gperf"
- {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
#line 607 "metafns.gperf"
{"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 662 "metafns.gperf"
@@ -1056,6 +1054,8 @@ metafn_lookup::find (const char *str, si
{"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"
{"annotations_of", METAFN_ANNOTATIONS_OF,
METAFN_KIND_VECTOR_INFO_INFO,},
#line 589 "metafns.gperf"
@@ -1078,21 +1078,21 @@ metafn_lookup::find (const char *str, si
-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, 17, -1, -1, 18, -1, 19, -1, 20,
- -1, 21, 22, -1, 23, -1, -1, -1, -1, 24,
- 25, 26, 27, -1, -1, 28, 29, -1, 30, -1,
- 31, -1, 32, 33, -1, 34, -1, -1, -1, -1,
- 35, 36, 37, 38, 39, 40, -1, -1, -1, -1,
- -1, 41, 42, -1, 43, -1, 44, -1, -1, 45,
- -1, 46, -1, -1, -1, -1, -1, -1, -1, -1,
+ 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, 79,
- -1, -1, -1, -1, 80, -1, -1, -1, 81, -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,
@@ -1135,13 +1135,13 @@ metafn_lookup::find (const char *str, si
-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, 223, -1, -1, -1,
- -1, -1, 224, -1, -1, -1, -1, -1, -1, 225,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 226, -1, -1, -1, -1, -1, 227, -1,
- -1, -1, -1, -1, 228, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 229, -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,
Jakub