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
> >
>

Reply via email to