Hi! Unhappy about the old and new names, as a function type is not a function, but ces't la vie.
Tested on x86_64-linux. 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
