From 967b4e823518dce3e6d2c46354ea03c4b14aa3de Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 7 Jan 2026 14:20:22 +0100 Subject: [PATCH] Introduce METAFN_KIND_SHIFT and METAFN_KIND_MASK, use it and rewrite process_metafunction start to use a loop for all 3 arguments. Update copyright years. --- gcc/cp/metafns.gperf | 139 +++-- gcc/cp/metafns.h | 1065 +++++++++++++++++---------------- gcc/cp/reflect.cc | 189 +++--- libstdc++-v3/include/std/meta | 2 +- 4 files changed, 725 insertions(+), 670 deletions(-) diff --git a/gcc/cp/metafns.gperf b/gcc/cp/metafns.gperf index 4759cdfe463..b4e93623eac 100644 --- a/gcc/cp/metafns.gperf +++ b/gcc/cp/metafns.gperf @@ -2,7 +2,7 @@ %define class-name metafn_lookup %struct-type %{ -/* Copyright (C) 2025 Free Software Foundation, Inc. +/* Copyright (C) 2025-2026 Free Software Foundation, Inc. Written by Jakub Jelinek This file is part of GCC. @@ -259,6 +259,11 @@ enum metafn_code { METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8 }; +enum { + METAFN_KIND_SHIFT = 5, + METAFN_KIND_MASK = (1 << METAFN_KIND_SHIFT) - 1 +}; + /* Possible return types of metafunctions. */ enum metafn_kind_ret { METAFN_KIND_RET_BOOL, @@ -274,6 +279,7 @@ enum metafn_kind_ret { METAFN_KIND_RET_ACCESS_CONTEXT, METAFN_KIND_RET_TEMPLATE_PARM, }; +static_assert (METAFN_KIND_RET_TEMPLATE_PARM <= (int) METAFN_KIND_MASK); /* Possible argument types of metafunctions. */ enum metafn_kind_arg { @@ -292,6 +298,7 @@ enum metafn_kind_arg { METAFN_KIND_ARG_TEMPLATE_PARM, /* Some other template parameter. */ METAFN_KIND_ARG_TEMPLATE_PARM_REF /* Reference to template parameter. */ }; +static_assert (METAFN_KIND_ARG_TEMPLATE_PARM_REF <= (int) METAFN_KIND_MASK); /* Possible sets of 0-3 arguments of metafunctions. */ enum metafn_kind_args { @@ -304,95 +311,133 @@ enum metafn_kind_args { METAFN_KIND_ARGS_TEMPLATE_PARM = METAFN_KIND_ARG_TEMPLATE_PARM, METAFN_KIND_ARGS_TEMPLATE_PARM_REF = METAFN_KIND_ARG_TEMPLATE_PARM_REF, METAFN_KIND_ARGS_INFO_INFO - = (METAFN_KIND_ARG_INFO << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_TINFO - = (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_TINFO_UNSIGNED - = (METAFN_KIND_ARG_UNSIGNED << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_UNSIGNED << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARG_ACCESS_CONTEXT << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_ACCESS_CONTEXT << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS - = (METAFN_KIND_ARG_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_DATA_MEMBER_OPTIONS << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_INFO_REFLECTION_RANGE - = (METAFN_KIND_ARG_REFLECTION_RANGE << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_REFLECTION_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARG_REFLECTION_RANGET << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_SIZE_T_TINFO - = (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_SIZE_T, + = (METAFN_KIND_ARG_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_SIZE_T, METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARG_REFLECTION_RANGET << 10) | METAFN_KIND_ARGS_TINFO_TINFO, + = (METAFN_KIND_ARG_REFLECTION_RANGET << (2 * METAFN_KIND_SHIFT)) + | METAFN_KIND_ARGS_TINFO_TINFO, }; +/* This encodes metafn_kind_ret in the low METAFN_KIND_SHIFT bits, then + first argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that, + second argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that + and third argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that. + Missing argument is METAFN_KIND_ARG_VOID aka 0. */ enum metafn_kind { METAFN_KIND_BOOL_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_BOOL, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, METAFN_KIND_BOOL_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_BOOL, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_TINFO - = (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << 5) + = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, - METAFN_KIND_INFO_INFO = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_INFO, + METAFN_KIND_BOOL_TINFO_TINFO + = (METAFN_KIND_ARGS_TINFO_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET + = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET + = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_INFO_INFO + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS - = (METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_INFO_REFLECTION_RANGE - = (METAFN_KIND_ARGS_INFO_REFLECTION_RANGE << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_INFO_REFLECTION_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TEMPLATE_PARM - = (METAFN_KIND_ARGS_TEMPLATE_PARM << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TEMPLATE_PARM << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TEMPLATE_PARM_REF - = (METAFN_KIND_ARGS_TEMPLATE_PARM_REF << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TEMPLATE_PARM_REF << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_SIZE_T_TINFO - = (METAFN_KIND_ARGS_SIZE_T_TINFO << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_SIZE_T_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_MEMBER_OFFSET_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_MEMBER_OFFSET, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_MEMBER_OFFSET, METAFN_KIND_OPERATORS_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_OPERATORS, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_OPERATORS, METAFN_KIND_SIZE_T_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SIZE_T_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SIZE_T_TINFO_UNSIGNED - = (METAFN_KIND_ARGS_TINFO_UNSIGNED << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_TINFO_UNSIGNED << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SOURCE_LOCATION_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SOURCE_LOCATION, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_SOURCE_LOCATION, METAFN_KIND_STRING_VIEW_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_STRING_VIEW_OPERATORS - = (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_OPERATORS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_U8STRING_VIEW_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_U8STRING_VIEW, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW, METAFN_KIND_U8STRING_VIEW_OPERATORS - = (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_U8STRING_VIEW, + = (METAFN_KIND_ARGS_OPERATORS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO - = (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_STRONG_ORDERING, + = (METAFN_KIND_ARGS_TINFO_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRONG_ORDERING, METAFN_KIND_VECTOR_INFO_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_VECTOR_INFO_INFO_INFO - = (METAFN_KIND_ARGS_INFO_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO, + = (METAFN_KIND_ARGS_INFO_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5) + = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << METAFN_KIND_SHIFT) | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_TEMPLATE_PARM_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_TEMPLATE_PARM, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_TEMPLATE_PARM, METAFN_KIND_ACCESS_CONTEXT_VOID - = (METAFN_KIND_ARGS_VOID << 5) | METAFN_KIND_RET_ACCESS_CONTEXT, + = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_ACCESS_CONTEXT, METAFN_KIND_STRING_VIEW_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_U8STRING_VIEW + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW }; %} struct metafn_info diff --git a/gcc/cp/metafns.h b/gcc/cp/metafns.h index c556ef70925..779c8dc2799 100644 --- a/gcc/cp/metafns.h +++ b/gcc/cp/metafns.h @@ -30,7 +30,7 @@ #line 4 "metafns.gperf" -/* Copyright (C) 2025 Free Software Foundation, Inc. +/* Copyright (C) 2025-2026 Free Software Foundation, Inc. Written by Jakub Jelinek This file is part of GCC. @@ -287,6 +287,11 @@ enum metafn_code { METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8 }; +enum { + METAFN_KIND_SHIFT = 5, + METAFN_KIND_MASK = (1 << METAFN_KIND_SHIFT) - 1 +}; + /* Possible return types of metafunctions. */ enum metafn_kind_ret { METAFN_KIND_RET_BOOL, @@ -302,6 +307,7 @@ enum metafn_kind_ret { METAFN_KIND_RET_ACCESS_CONTEXT, METAFN_KIND_RET_TEMPLATE_PARM, }; +static_assert (METAFN_KIND_RET_TEMPLATE_PARM <= (int) METAFN_KIND_MASK); /* Possible argument types of metafunctions. */ enum metafn_kind_arg { @@ -320,6 +326,7 @@ enum metafn_kind_arg { METAFN_KIND_ARG_TEMPLATE_PARM, /* Some other template parameter. */ METAFN_KIND_ARG_TEMPLATE_PARM_REF /* Reference to template parameter. */ }; +static_assert (METAFN_KIND_ARG_TEMPLATE_PARM_REF <= (int) METAFN_KIND_MASK); /* Possible sets of 0-3 arguments of metafunctions. */ enum metafn_kind_args { @@ -332,97 +339,135 @@ enum metafn_kind_args { METAFN_KIND_ARGS_TEMPLATE_PARM = METAFN_KIND_ARG_TEMPLATE_PARM, METAFN_KIND_ARGS_TEMPLATE_PARM_REF = METAFN_KIND_ARG_TEMPLATE_PARM_REF, METAFN_KIND_ARGS_INFO_INFO - = (METAFN_KIND_ARG_INFO << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_TINFO - = (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_TINFO_UNSIGNED - = (METAFN_KIND_ARG_UNSIGNED << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_UNSIGNED << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARG_ACCESS_CONTEXT << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_ACCESS_CONTEXT << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS - = (METAFN_KIND_ARG_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_DATA_MEMBER_OPTIONS << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_INFO_REFLECTION_RANGE - = (METAFN_KIND_ARG_REFLECTION_RANGE << 5) | METAFN_KIND_ARG_INFO, + = (METAFN_KIND_ARG_REFLECTION_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_INFO, METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARG_REFLECTION_RANGET << 5) | METAFN_KIND_ARG_TINFO, + = (METAFN_KIND_ARG_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_ARG_TINFO, METAFN_KIND_ARGS_SIZE_T_TINFO - = (METAFN_KIND_ARG_TINFO << 5) | METAFN_KIND_ARG_SIZE_T, + = (METAFN_KIND_ARG_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_ARG_SIZE_T, METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARG_REFLECTION_RANGET << 10) | METAFN_KIND_ARGS_TINFO_TINFO, + = (METAFN_KIND_ARG_REFLECTION_RANGET << (2 * METAFN_KIND_SHIFT)) + | METAFN_KIND_ARGS_TINFO_TINFO, }; +/* This encodes metafn_kind_ret in the low METAFN_KIND_SHIFT bits, then + first argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that, + second argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that + and third argument metafn_kind_arg in METAFN_KIND_SHIFT bits above that. + Missing argument is METAFN_KIND_ARG_VOID aka 0. */ enum metafn_kind { METAFN_KIND_BOOL_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_BOOL, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, METAFN_KIND_BOOL_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_BOOL, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_TINFO - = (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_BOOL, - METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << 5) + = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << METAFN_KIND_SHIFT) | METAFN_KIND_RET_BOOL, - METAFN_KIND_INFO_INFO = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_INFO, + METAFN_KIND_BOOL_TINFO_TINFO + = (METAFN_KIND_ARGS_TINFO_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET + = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET + = (METAFN_KIND_ARGS_TINFO_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_BOOL, + METAFN_KIND_INFO_INFO + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS - = (METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TINFO_DATA_MEMBER_OPTIONS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_REFLECTION_RANGET - = (METAFN_KIND_ARGS_REFLECTION_RANGET << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_REFLECTION_RANGET << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_INFO_REFLECTION_RANGE - = (METAFN_KIND_ARGS_INFO_REFLECTION_RANGE << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_INFO_REFLECTION_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TEMPLATE_PARM - = (METAFN_KIND_ARGS_TEMPLATE_PARM << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TEMPLATE_PARM << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_TEMPLATE_PARM_REF - = (METAFN_KIND_ARGS_TEMPLATE_PARM_REF << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_TEMPLATE_PARM_REF << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_INFO_SIZE_T_TINFO - = (METAFN_KIND_ARGS_SIZE_T_TINFO << 5) | METAFN_KIND_RET_INFO, + = (METAFN_KIND_ARGS_SIZE_T_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_INFO, METAFN_KIND_MEMBER_OFFSET_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_MEMBER_OFFSET, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_MEMBER_OFFSET, METAFN_KIND_OPERATORS_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_OPERATORS, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_OPERATORS, METAFN_KIND_SIZE_T_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SIZE_T_TINFO - = (METAFN_KIND_ARGS_TINFO << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_TINFO << METAFN_KIND_SHIFT) | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SIZE_T_TINFO_UNSIGNED - = (METAFN_KIND_ARGS_TINFO_UNSIGNED << 5) | METAFN_KIND_RET_SIZE_T, + = (METAFN_KIND_ARGS_TINFO_UNSIGNED << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_SIZE_T, METAFN_KIND_SOURCE_LOCATION_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_SOURCE_LOCATION, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_SOURCE_LOCATION, METAFN_KIND_STRING_VIEW_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_STRING_VIEW_OPERATORS - = (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_OPERATORS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_U8STRING_VIEW_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_U8STRING_VIEW, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW, METAFN_KIND_U8STRING_VIEW_OPERATORS - = (METAFN_KIND_ARGS_OPERATORS << 5) | METAFN_KIND_RET_U8STRING_VIEW, + = (METAFN_KIND_ARGS_OPERATORS << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO - = (METAFN_KIND_ARGS_TINFO_TINFO << 5) | METAFN_KIND_RET_STRONG_ORDERING, + = (METAFN_KIND_ARGS_TINFO_TINFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRONG_ORDERING, METAFN_KIND_VECTOR_INFO_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_VECTOR_INFO_INFO_INFO - = (METAFN_KIND_ARGS_INFO_INFO << 5) | METAFN_KIND_RET_VECTOR_INFO, + = (METAFN_KIND_ARGS_INFO_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT - = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << 5) + = (METAFN_KIND_ARGS_INFO_ACCESS_CONTEXT << METAFN_KIND_SHIFT) | METAFN_KIND_RET_VECTOR_INFO, METAFN_KIND_TEMPLATE_PARM_INFO - = (METAFN_KIND_ARGS_INFO << 5) | METAFN_KIND_RET_TEMPLATE_PARM, + = (METAFN_KIND_ARGS_INFO << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_TEMPLATE_PARM, METAFN_KIND_ACCESS_CONTEXT_VOID - = (METAFN_KIND_ARGS_VOID << 5) | METAFN_KIND_RET_ACCESS_CONTEXT, + = (METAFN_KIND_ARGS_VOID << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_ACCESS_CONTEXT, METAFN_KIND_STRING_VIEW_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_STRING_VIEW, + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_STRING_VIEW, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE - = (METAFN_KIND_ARGS_INPUT_RANGE << 5) | METAFN_KIND_RET_U8STRING_VIEW + = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT) + | METAFN_KIND_RET_U8STRING_VIEW }; -#line 398 "metafns.gperf" +#line 443 "metafns.gperf" struct metafn_info { /* A name within "std::meta::" (or "std::meta::access_context::"). */ @@ -546,473 +591,473 @@ metafn_lookup::find (const char *str, size_t len) #endif static const struct metafn_info wordlist[] = { -#line 598 "metafns.gperf" - {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,}, -#line 528 "metafns.gperf" - {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 533 "metafns.gperf" - {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 439 "metafns.gperf" - {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,}, -#line 485 "metafns.gperf" - {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,}, -#line 492 "metafns.gperf" - {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,}, -#line 453 "metafns.gperf" - {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,}, -#line 604 "metafns.gperf" - {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 583 "metafns.gperf" - {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, -#line 609 "metafns.gperf" - {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, -#line 588 "metafns.gperf" - {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 610 "metafns.gperf" - {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,}, -#line 585 "metafns.gperf" - {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 601 "metafns.gperf" - {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 589 "metafns.gperf" - {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 586 "metafns.gperf" - {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 477 "metafns.gperf" - {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 636 "metafns.gperf" - {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,}, -#line 529 "metafns.gperf" - {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 454 "metafns.gperf" - {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,}, -#line 422 "metafns.gperf" - {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,}, -#line 434 "metafns.gperf" - {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,}, -#line 517 "metafns.gperf" - {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,}, -#line 637 "metafns.gperf" - {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,}, -#line 555 "metafns.gperf" - {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 424 "metafns.gperf" - {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,}, -#line 458 "metafns.gperf" - {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,}, -#line 455 "metafns.gperf" - {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,}, -#line 606 "metafns.gperf" - {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 562 "metafns.gperf" - {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 438 "metafns.gperf" - {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,}, -#line 484 "metafns.gperf" - {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,}, -#line 600 "metafns.gperf" - {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 508 "metafns.gperf" - {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, -#line 447 "metafns.gperf" - {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,}, -#line 476 "metafns.gperf" - {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 587 "metafns.gperf" - {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 459 "metafns.gperf" - {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,}, -#line 592 "metafns.gperf" - {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 603 "metafns.gperf" - {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 593 "metafns.gperf" - {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 475 "metafns.gperf" - {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 584 "metafns.gperf" - {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 518 "metafns.gperf" - {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, -#line 480 "metafns.gperf" - {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 411 "metafns.gperf" - {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,}, -#line 567 "metafns.gperf" - {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 565 "metafns.gperf" - {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, -#line 445 "metafns.gperf" - {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, -#line 570 "metafns.gperf" - {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 634 "metafns.gperf" - {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,}, -#line 456 "metafns.gperf" - {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,}, -#line 465 "metafns.gperf" - {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, -#line 501 "metafns.gperf" - {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,}, -#line 494 "metafns.gperf" - {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,}, -#line 542 "metafns.gperf" - {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 545 "metafns.gperf" - {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 605 "metafns.gperf" - {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 516 "metafns.gperf" - {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,}, -#line 468 "metafns.gperf" - {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, -#line 641 "metafns.gperf" - {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,}, -#line 628 "metafns.gperf" - {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,}, -#line 483 "metafns.gperf" - {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 638 "metafns.gperf" - {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,}, -#line 629 "metafns.gperf" - {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,}, -#line 493 "metafns.gperf" - {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,}, -#line 635 "metafns.gperf" - {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,}, -#line 522 "metafns.gperf" - {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,}, -#line 473 "metafns.gperf" - {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,}, -#line 568 "metafns.gperf" - {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 419 "metafns.gperf" - {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,}, -#line 463 "metafns.gperf" - {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, -#line 573 "metafns.gperf" - {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 591 "metafns.gperf" - {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 543 "metafns.gperf" - {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 450 "metafns.gperf" - {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,}, -#line 590 "metafns.gperf" - {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 549 "metafns.gperf" - {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 571 "metafns.gperf" - {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 474 "metafns.gperf" - {"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,}, -#line 466 "metafns.gperf" - {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, -#line 500 "metafns.gperf" - {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, -#line 514 "metafns.gperf" - {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,}, -#line 469 "metafns.gperf" - {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, -#line 569 "metafns.gperf" - {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 488 "metafns.gperf" - {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,}, -#line 552 "metafns.gperf" - {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 467 "metafns.gperf" - {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, -#line 489 "metafns.gperf" - {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,}, -#line 507 "metafns.gperf" - {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, -#line 575 "metafns.gperf" - {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, -#line 580 "metafns.gperf" - {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 577 "metafns.gperf" - {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 599 "metafns.gperf" - {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,}, -#line 538 "metafns.gperf" - {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 498 "metafns.gperf" - {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,}, -#line 478 "metafns.gperf" - {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 462 "metafns.gperf" - {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,}, -#line 423 "metafns.gperf" - {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,}, -#line 490 "metafns.gperf" - {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,}, -#line 632 "metafns.gperf" - {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,}, -#line 452 "metafns.gperf" - {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,}, -#line 544 "metafns.gperf" - {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 495 "metafns.gperf" - {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,}, -#line 426 "metafns.gperf" - {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,}, -#line 625 "metafns.gperf" - {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,}, -#line 566 "metafns.gperf" - {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 630 "metafns.gperf" - {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,}, -#line 471 "metafns.gperf" - {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,}, -#line 414 "metafns.gperf" - {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,}, -#line 547 "metafns.gperf" - {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 619 "metafns.gperf" - {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,}, -#line 440 "metafns.gperf" - {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,}, -#line 457 "metafns.gperf" - {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,}, -#line 581 "metafns.gperf" - {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 578 "metafns.gperf" - {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 464 "metafns.gperf" - {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, -#line 436 "metafns.gperf" - {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,}, -#line 486 "metafns.gperf" - {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,}, -#line 558 "metafns.gperf" - {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 470 "metafns.gperf" - {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,}, -#line 537 "metafns.gperf" - {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 546 "metafns.gperf" - {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 519 "metafns.gperf" - {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, -#line 535 "metafns.gperf" - {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 616 "metafns.gperf" - {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,}, -#line 520 "metafns.gperf" - {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,}, -#line 579 "metafns.gperf" - {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 425 "metafns.gperf" - {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,}, -#line 443 "metafns.gperf" - {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, -#line 618 "metafns.gperf" - {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,}, -#line 534 "metafns.gperf" - {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 512 "metafns.gperf" - {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, -#line 574 "metafns.gperf" - {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 499 "metafns.gperf" - {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, -#line 607 "metafns.gperf" - {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, -#line 614 "metafns.gperf" - {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,}, -#line 479 "metafns.gperf" - {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 554 "metafns.gperf" - {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 582 "metafns.gperf" - {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 448 "metafns.gperf" - {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,}, -#line 503 "metafns.gperf" - {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, -#line 608 "metafns.gperf" - {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,}, -#line 602 "metafns.gperf" - {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 551 "metafns.gperf" - {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 523 "metafns.gperf" - {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,}, -#line 576 "metafns.gperf" - {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 482 "metafns.gperf" - {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 410 "metafns.gperf" - {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,}, -#line 560 "metafns.gperf" - {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 564 "metafns.gperf" - {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 572 "metafns.gperf" - {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 511 "metafns.gperf" - {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, -#line 513 "metafns.gperf" - {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,}, -#line 487 "metafns.gperf" - {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,}, -#line 428 "metafns.gperf" - {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,}, -#line 461 "metafns.gperf" - {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,}, -#line 621 "metafns.gperf" - {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,}, -#line 417 "metafns.gperf" - {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,}, -#line 594 "metafns.gperf" - {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,}, -#line 550 "metafns.gperf" - {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 433 "metafns.gperf" - {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,}, -#line 526 "metafns.gperf" - {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,}, -#line 451 "metafns.gperf" - {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,}, -#line 437 "metafns.gperf" - {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,}, -#line 541 "metafns.gperf" - {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 502 "metafns.gperf" - {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,}, -#line 429 "metafns.gperf" - {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,}, -#line 421 "metafns.gperf" - {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,}, -#line 615 "metafns.gperf" - {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,}, -#line 430 "metafns.gperf" - {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,}, -#line 595 "metafns.gperf" - {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,}, -#line 536 "metafns.gperf" - {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 416 "metafns.gperf" - {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,}, -#line 472 "metafns.gperf" - {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,}, -#line 491 "metafns.gperf" - {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,}, -#line 420 "metafns.gperf" - {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,}, -#line 559 "metafns.gperf" - {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 427 "metafns.gperf" - {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,}, -#line 613 "metafns.gperf" - {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,}, -#line 521 "metafns.gperf" - {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,}, -#line 531 "metafns.gperf" - {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 413 "metafns.gperf" - {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,}, -#line 617 "metafns.gperf" - {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,}, -#line 505 "metafns.gperf" - {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, -#line 449 "metafns.gperf" - {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,}, -#line 506 "metafns.gperf" - {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, -#line 622 "metafns.gperf" - {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,}, -#line 504 "metafns.gperf" - {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, -#line 442 "metafns.gperf" - {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,}, -#line 597 "metafns.gperf" - {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 540 "metafns.gperf" - {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 432 "metafns.gperf" - {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,}, -#line 525 "metafns.gperf" - {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,}, -#line 441 "metafns.gperf" - {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,}, -#line 444 "metafns.gperf" - {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, -#line 435 "metafns.gperf" - {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,}, -#line 626 "metafns.gperf" - {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,}, -#line 631 "metafns.gperf" - {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,}, -#line 497 "metafns.gperf" - {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,}, -#line 460 "metafns.gperf" - {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,}, -#line 624 "metafns.gperf" - {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,}, -#line 496 "metafns.gperf" - {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,}, -#line 611 "metafns.gperf" - {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,}, -#line 481 "metafns.gperf" - {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, -#line 596 "metafns.gperf" - {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,}, -#line 623 "metafns.gperf" - {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,}, -#line 532 "metafns.gperf" - {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 446 "metafns.gperf" - {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,}, -#line 620 "metafns.gperf" - {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,}, -#line 509 "metafns.gperf" - {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, -#line 548 "metafns.gperf" - {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 556 "metafns.gperf" - {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 527 "metafns.gperf" - {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, -#line 642 "metafns.gperf" - {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,}, #line 643 "metafns.gperf" - {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,}, -#line 563 "metafns.gperf" - {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 553 "metafns.gperf" - {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 633 "metafns.gperf" - {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,}, -#line 524 "metafns.gperf" - {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,}, -#line 412 "metafns.gperf" - {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,}, + {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,}, +#line 573 "metafns.gperf" + {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 578 "metafns.gperf" + {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 484 "metafns.gperf" + {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,}, #line 530 "metafns.gperf" - {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 510 "metafns.gperf" - {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, -#line 627 "metafns.gperf" - {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,}, -#line 557 "metafns.gperf" - {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,}, + {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,}, +#line 537 "metafns.gperf" + {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,}, +#line 498 "metafns.gperf" + {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,}, +#line 649 "metafns.gperf" + {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 628 "metafns.gperf" + {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, +#line 654 "metafns.gperf" + {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, +#line 633 "metafns.gperf" + {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 655 "metafns.gperf" + {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,}, +#line 630 "metafns.gperf" + {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 646 "metafns.gperf" + {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 634 "metafns.gperf" + {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 631 "metafns.gperf" + {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 522 "metafns.gperf" + {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 681 "metafns.gperf" + {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,}, +#line 574 "metafns.gperf" + {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 499 "metafns.gperf" + {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,}, +#line 467 "metafns.gperf" + {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,}, +#line 479 "metafns.gperf" + {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,}, +#line 562 "metafns.gperf" + {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,}, +#line 682 "metafns.gperf" + {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,}, +#line 600 "metafns.gperf" + {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 469 "metafns.gperf" + {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,}, +#line 503 "metafns.gperf" + {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,}, +#line 500 "metafns.gperf" + {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,}, +#line 651 "metafns.gperf" + {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 607 "metafns.gperf" + {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 483 "metafns.gperf" + {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,}, +#line 529 "metafns.gperf" + {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,}, +#line 645 "metafns.gperf" + {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 553 "metafns.gperf" + {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, +#line 492 "metafns.gperf" + {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,}, +#line 521 "metafns.gperf" + {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 632 "metafns.gperf" + {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 504 "metafns.gperf" + {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,}, +#line 637 "metafns.gperf" + {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 648 "metafns.gperf" + {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 638 "metafns.gperf" + {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 520 "metafns.gperf" + {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 629 "metafns.gperf" + {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 563 "metafns.gperf" + {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, +#line 525 "metafns.gperf" + {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 456 "metafns.gperf" + {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,}, #line 612 "metafns.gperf" - {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,}, -#line 515 "metafns.gperf" - {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,}, -#line 418 "metafns.gperf" - {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,}, -#line 640 "metafns.gperf" - {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,}, -#line 415 "metafns.gperf" - {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,}, -#line 639 "metafns.gperf" - {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, + {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 610 "metafns.gperf" + {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, +#line 490 "metafns.gperf" + {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, +#line 615 "metafns.gperf" + {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 679 "metafns.gperf" + {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,}, +#line 501 "metafns.gperf" + {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,}, +#line 510 "metafns.gperf" + {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, +#line 546 "metafns.gperf" + {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,}, #line 539 "metafns.gperf" - {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,}, -#line 431 "metafns.gperf" - {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}, + {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,}, +#line 587 "metafns.gperf" + {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 590 "metafns.gperf" + {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 650 "metafns.gperf" + {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, #line 561 "metafns.gperf" + {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,}, +#line 513 "metafns.gperf" + {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, +#line 686 "metafns.gperf" + {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,}, +#line 673 "metafns.gperf" + {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,}, +#line 528 "metafns.gperf" + {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 683 "metafns.gperf" + {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,}, +#line 674 "metafns.gperf" + {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,}, +#line 538 "metafns.gperf" + {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,}, +#line 680 "metafns.gperf" + {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,}, +#line 567 "metafns.gperf" + {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,}, +#line 518 "metafns.gperf" + {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,}, +#line 613 "metafns.gperf" + {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 464 "metafns.gperf" + {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,}, +#line 508 "metafns.gperf" + {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, +#line 618 "metafns.gperf" + {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 636 "metafns.gperf" + {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 588 "metafns.gperf" + {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 495 "metafns.gperf" + {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,}, +#line 635 "metafns.gperf" + {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 594 "metafns.gperf" + {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 616 "metafns.gperf" + {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 519 "metafns.gperf" + {"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,}, +#line 511 "metafns.gperf" + {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, +#line 545 "metafns.gperf" + {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, +#line 559 "metafns.gperf" + {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,}, +#line 514 "metafns.gperf" + {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, +#line 614 "metafns.gperf" + {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 533 "metafns.gperf" + {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,}, +#line 597 "metafns.gperf" + {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 512 "metafns.gperf" + {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,}, +#line 534 "metafns.gperf" + {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,}, +#line 552 "metafns.gperf" + {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, +#line 620 "metafns.gperf" + {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, +#line 625 "metafns.gperf" + {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 622 "metafns.gperf" + {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 644 "metafns.gperf" + {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,}, +#line 583 "metafns.gperf" + {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 543 "metafns.gperf" + {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,}, +#line 523 "metafns.gperf" + {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 507 "metafns.gperf" + {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,}, +#line 468 "metafns.gperf" + {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,}, +#line 535 "metafns.gperf" + {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,}, +#line 677 "metafns.gperf" + {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,}, +#line 497 "metafns.gperf" + {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,}, +#line 589 "metafns.gperf" + {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 540 "metafns.gperf" + {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,}, +#line 471 "metafns.gperf" + {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,}, +#line 670 "metafns.gperf" + {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,}, +#line 611 "metafns.gperf" + {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 675 "metafns.gperf" + {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,}, +#line 516 "metafns.gperf" + {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,}, +#line 459 "metafns.gperf" + {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,}, +#line 592 "metafns.gperf" + {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 664 "metafns.gperf" + {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,}, +#line 485 "metafns.gperf" + {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,}, +#line 502 "metafns.gperf" + {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,}, +#line 626 "metafns.gperf" + {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 623 "metafns.gperf" + {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 509 "metafns.gperf" + {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,}, +#line 481 "metafns.gperf" + {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,}, +#line 531 "metafns.gperf" + {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,}, +#line 603 "metafns.gperf" + {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 515 "metafns.gperf" + {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,}, +#line 582 "metafns.gperf" + {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 591 "metafns.gperf" + {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 564 "metafns.gperf" + {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, +#line 580 "metafns.gperf" + {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 661 "metafns.gperf" + {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,}, +#line 565 "metafns.gperf" + {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,}, +#line 624 "metafns.gperf" + {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 470 "metafns.gperf" + {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,}, +#line 488 "metafns.gperf" + {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, +#line 663 "metafns.gperf" + {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,}, +#line 579 "metafns.gperf" + {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 557 "metafns.gperf" + {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, +#line 619 "metafns.gperf" + {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 544 "metafns.gperf" + {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, +#line 652 "metafns.gperf" + {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,}, +#line 659 "metafns.gperf" + {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,}, +#line 524 "metafns.gperf" + {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 599 "metafns.gperf" + {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 627 "metafns.gperf" + {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 493 "metafns.gperf" + {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,}, +#line 548 "metafns.gperf" + {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, +#line 653 "metafns.gperf" + {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,}, +#line 647 "metafns.gperf" + {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 596 "metafns.gperf" + {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 568 "metafns.gperf" + {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,}, +#line 621 "metafns.gperf" + {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 527 "metafns.gperf" + {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 455 "metafns.gperf" + {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,}, +#line 605 "metafns.gperf" + {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 609 "metafns.gperf" + {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 617 "metafns.gperf" + {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 556 "metafns.gperf" + {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, +#line 558 "metafns.gperf" + {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,}, +#line 532 "metafns.gperf" + {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,}, +#line 473 "metafns.gperf" + {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,}, +#line 506 "metafns.gperf" + {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,}, +#line 666 "metafns.gperf" + {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,}, +#line 462 "metafns.gperf" + {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,}, +#line 639 "metafns.gperf" + {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,}, +#line 595 "metafns.gperf" + {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 478 "metafns.gperf" + {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,}, +#line 571 "metafns.gperf" + {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,}, +#line 496 "metafns.gperf" + {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,}, +#line 482 "metafns.gperf" + {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,}, +#line 586 "metafns.gperf" + {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 547 "metafns.gperf" + {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,}, +#line 474 "metafns.gperf" + {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,}, +#line 466 "metafns.gperf" + {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,}, +#line 660 "metafns.gperf" + {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,}, +#line 475 "metafns.gperf" + {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,}, +#line 640 "metafns.gperf" + {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,}, +#line 581 "metafns.gperf" + {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 461 "metafns.gperf" + {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,}, +#line 517 "metafns.gperf" + {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,}, +#line 536 "metafns.gperf" + {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,}, +#line 465 "metafns.gperf" + {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,}, +#line 604 "metafns.gperf" + {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 472 "metafns.gperf" + {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,}, +#line 658 "metafns.gperf" + {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,}, +#line 566 "metafns.gperf" + {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,}, +#line 576 "metafns.gperf" + {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 458 "metafns.gperf" + {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,}, +#line 662 "metafns.gperf" + {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,}, +#line 550 "metafns.gperf" + {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, +#line 494 "metafns.gperf" + {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,}, +#line 551 "metafns.gperf" + {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, +#line 667 "metafns.gperf" + {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,}, +#line 549 "metafns.gperf" + {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,}, +#line 487 "metafns.gperf" + {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,}, +#line 642 "metafns.gperf" + {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 585 "metafns.gperf" + {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 477 "metafns.gperf" + {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,}, +#line 570 "metafns.gperf" + {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,}, +#line 486 "metafns.gperf" + {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,}, +#line 489 "metafns.gperf" + {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,}, +#line 480 "metafns.gperf" + {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,}, +#line 671 "metafns.gperf" + {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,}, +#line 676 "metafns.gperf" + {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,}, +#line 542 "metafns.gperf" + {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,}, +#line 505 "metafns.gperf" + {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,}, +#line 669 "metafns.gperf" + {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,}, +#line 541 "metafns.gperf" + {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,}, +#line 656 "metafns.gperf" + {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,}, +#line 526 "metafns.gperf" + {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,}, +#line 641 "metafns.gperf" + {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,}, +#line 668 "metafns.gperf" + {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,}, +#line 577 "metafns.gperf" + {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 491 "metafns.gperf" + {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,}, +#line 665 "metafns.gperf" + {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,}, +#line 554 "metafns.gperf" + {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, +#line 593 "metafns.gperf" + {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 601 "metafns.gperf" + {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 572 "metafns.gperf" + {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,}, +#line 687 "metafns.gperf" + {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,}, +#line 688 "metafns.gperf" + {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,}, +#line 608 "metafns.gperf" + {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 598 "metafns.gperf" + {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 678 "metafns.gperf" + {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,}, +#line 569 "metafns.gperf" + {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,}, +#line 457 "metafns.gperf" + {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,}, +#line 575 "metafns.gperf" + {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 555 "metafns.gperf" + {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,}, +#line 672 "metafns.gperf" + {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,}, +#line 602 "metafns.gperf" + {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 657 "metafns.gperf" + {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,}, +#line 560 "metafns.gperf" + {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,}, +#line 463 "metafns.gperf" + {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,}, +#line 685 "metafns.gperf" + {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,}, +#line 460 "metafns.gperf" + {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,}, +#line 684 "metafns.gperf" + {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,}, +#line 584 "metafns.gperf" + {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,}, +#line 476 "metafns.gperf" + {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,}, +#line 606 "metafns.gperf" {"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,} }; #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3) diff --git a/gcc/cp/reflect.cc b/gcc/cp/reflect.cc index 8ca5bad6171..2d7185510c9 100644 --- a/gcc/cp/reflect.cc +++ b/gcc/cp/reflect.cc @@ -1,5 +1,5 @@ /* C++ reflection code. - Copyright (C) 2025 Free Software Foundation, Inc. + Copyright (C) 2025-2026 Free Software Foundation, Inc. Written by Marek Polacek and Jakub Jelinek . @@ -7408,121 +7408,86 @@ process_metafunction (const constexpr_ctx *ctx, tree fun, tree call, return NULL_TREE; } tree h = NULL_TREE, h1 = NULL_TREE, hvec = NULL_TREE, expr = NULL_TREE; - tree type = NULL_TREE, info; + tree type = NULL_TREE, ht, info; reflect_kind kind = REFLECT_UNDEF; - switch ((minfo->kind >> 5) & 31) - { - case METAFN_KIND_ARG_VOID: - break; - case METAFN_KIND_ARG_INFO: - case METAFN_KIND_ARG_TINFO: - info = get_info (ctx, call, 0, non_constant_p, overflow_p, jump_target); - if (*jump_target || *non_constant_p) - return NULL_TREE; - h = REFLECT_EXPR_HANDLE (info); - kind = REFLECT_EXPR_KIND (info); - if (((minfo->kind >> 5) & 31) == METAFN_KIND_ARG_TINFO) - { - if (eval_is_type (h) != boolean_true_node) - return throw_exception_nontype (loc, ctx, fun, non_constant_p, - jump_target); - } - else - { + for (int argno = 0; argno < 3; ++argno) + switch ((minfo->kind >> ((argno + 1) * METAFN_KIND_SHIFT)) + & METAFN_KIND_MASK) + { + case METAFN_KIND_ARG_VOID: + break; + case METAFN_KIND_ARG_INFO: + case METAFN_KIND_ARG_TINFO: + gcc_assert (argno < 2); + info = get_info (ctx, call, argno, non_constant_p, overflow_p, + jump_target); + if (*jump_target || *non_constant_p) + return NULL_TREE; + ht = REFLECT_EXPR_HANDLE (info); + if (((minfo->kind >> ((argno + 1) * METAFN_KIND_SHIFT)) + & METAFN_KIND_MASK) == METAFN_KIND_ARG_TINFO) + { + if (eval_is_type (ht) != boolean_true_node) + return throw_exception_nontype (loc, ctx, fun, non_constant_p, + jump_target); + } + else if (argno == 0) /* There still could be a TEMPLATE_ID_EXPR denoting a function template. */ - h = resolve_nondeduced_context (h, tf_warning_or_error); - } - break; - case METAFN_KIND_ARG_REFLECTION_RANGE: - case METAFN_KIND_ARG_UNSIGNED: - case METAFN_KIND_ARG_ACCESS_CONTEXT: - case METAFN_KIND_ARG_DATA_MEMBER_OPTIONS: - default: - gcc_unreachable (); - case METAFN_KIND_ARG_REFLECTION_RANGET: - hvec = get_type_info_vec (loc, ctx, call, 0, non_constant_p, + ht = resolve_nondeduced_context (ht, tf_warning_or_error); + if (argno == 0) + { + kind = REFLECT_EXPR_KIND (info); + h = ht; + } + else + h1 = ht; + break; + case METAFN_KIND_ARG_REFLECTION_RANGE: + gcc_assert (argno == 1); + hvec = get_info_vec (loc, ctx, call, argno, non_constant_p, + overflow_p, jump_target, fun); + if (*jump_target || *non_constant_p) + return NULL_TREE; + break; + case METAFN_KIND_ARG_REFLECTION_RANGET: + hvec = get_type_info_vec (loc, ctx, call, argno, non_constant_p, overflow_p, jump_target, fun); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - case METAFN_KIND_ARG_INPUT_RANGE: - /* Handled in eval_reflect_constant_*. */ - break; - case METAFN_KIND_ARG_TEMPLATE_PARM: - case METAFN_KIND_ARG_TEMPLATE_PARM_REF: - type = TREE_VEC_ELT (get_template_innermost_arguments (fun), 0); - /* FALLTHRU */ - case METAFN_KIND_ARG_SIZE_T: - case METAFN_KIND_ARG_OPERATORS: - expr = get_nth_callarg (call, 0); - expr = cxx_eval_constant_expression (ctx, expr, vc_prvalue, - non_constant_p, overflow_p, - jump_target); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - } - switch ((minfo->kind >> 10) & 31) - { - case METAFN_KIND_ARG_VOID: - break; - case METAFN_KIND_ARG_INFO: - case METAFN_KIND_ARG_TINFO: - info = get_info (ctx, call, 1, non_constant_p, overflow_p, jump_target); - if (*jump_target || *non_constant_p) - return NULL_TREE; - h1 = REFLECT_EXPR_HANDLE (info); - if (((minfo->kind >> 10) & 31) == METAFN_KIND_ARG_TINFO) - { - if (eval_is_type (h1) != boolean_true_node) - return throw_exception_nontype (loc, ctx, fun, non_constant_p, - jump_target); - } - break; - case METAFN_KIND_ARG_SIZE_T: - case METAFN_KIND_ARG_OPERATORS: - case METAFN_KIND_ARG_INPUT_RANGE: - case METAFN_KIND_ARG_TEMPLATE_PARM: - case METAFN_KIND_ARG_TEMPLATE_PARM_REF: - default: - gcc_unreachable (); - case METAFN_KIND_ARG_REFLECTION_RANGE: - hvec = get_info_vec (loc, ctx, call, 1, non_constant_p, overflow_p, - jump_target, fun); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - case METAFN_KIND_ARG_REFLECTION_RANGET: - hvec = get_type_info_vec (loc, ctx, call, 1, non_constant_p, - overflow_p, jump_target, fun); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - case METAFN_KIND_ARG_UNSIGNED: - case METAFN_KIND_ARG_ACCESS_CONTEXT: - case METAFN_KIND_ARG_DATA_MEMBER_OPTIONS: - expr = get_nth_callarg (call, 1); - expr = cxx_eval_constant_expression (ctx, expr, vc_prvalue, - non_constant_p, overflow_p, - jump_target); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - } - switch ((minfo->kind >> 15) & 31) - { - case METAFN_KIND_ARG_VOID: - break; - default: - gcc_unreachable (); - case METAFN_KIND_ARG_REFLECTION_RANGET: - hvec = get_type_info_vec (loc, ctx, call, 2, non_constant_p, - overflow_p, jump_target, fun); - if (*jump_target || *non_constant_p) - return NULL_TREE; - break; - } + if (*jump_target || *non_constant_p) + return NULL_TREE; + break; + case METAFN_KIND_ARG_INPUT_RANGE: + /* Handled in eval_reflect_constant_*. */ + gcc_assert (argno == 0); + break; + case METAFN_KIND_ARG_TEMPLATE_PARM: + case METAFN_KIND_ARG_TEMPLATE_PARM_REF: + type = TREE_VEC_ELT (get_template_innermost_arguments (fun), 0); + /* FALLTHRU */ + case METAFN_KIND_ARG_SIZE_T: + case METAFN_KIND_ARG_OPERATORS: + gcc_assert (argno == 0); + expr = get_nth_callarg (call, 0); + expr = cxx_eval_constant_expression (ctx, expr, vc_prvalue, + non_constant_p, overflow_p, + jump_target); + if (*jump_target || *non_constant_p) + return NULL_TREE; + break; + case METAFN_KIND_ARG_UNSIGNED: + case METAFN_KIND_ARG_ACCESS_CONTEXT: + case METAFN_KIND_ARG_DATA_MEMBER_OPTIONS: + gcc_assert (argno == 1); + expr = get_nth_callarg (call, argno); + expr = cxx_eval_constant_expression (ctx, expr, vc_prvalue, + non_constant_p, overflow_p, + jump_target); + if (*jump_target || *non_constant_p) + return NULL_TREE; + break; + default: + gcc_unreachable (); + } switch (minfo->code) { diff --git a/libstdc++-v3/include/std/meta b/libstdc++-v3/include/std/meta index cc47da1c592..033746a4034 100644 --- a/libstdc++-v3/include/std/meta +++ b/libstdc++-v3/include/std/meta @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2025 Free Software Foundation, Inc. +// Copyright (C) 2025-2026 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the