On Sat, 28 Mar 2026 at 12:04, Jason Merrill <[email protected]> wrote: > > On 3/28/26 11:37 AM, Jakub Jelinek wrote: > > 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. > > The compiler changes are OK.
The library parts are OK too. > > > 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 > > >
