c++, libstdc++: Remove is_consteval_only* traits

Message ID acoN1uBOXGmJ4IAw@tucnak
State New
Headers
Series c++, libstdc++: Remove is_consteval_only* traits |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply

Commit Message

Jakub Jelinek March 30, 2026, 5:44 a.m. UTC
  Hi!

The following patch implements LWG4555.

Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

2026-03-30  Jakub Jelinek  <jakub@redhat.com>

gcc/cp/
	* constraint.cc (diagnose_trait_expr): Remove CPTK_IS_CONSTEVAL_ONLY
	handling.
	* metafns.gperf (enum metafn_code): Remove
	METAFN_IS_CONSTEVAL_ONLY_TYPE.
	(is_consteval_only_type): Remove.
	* semantics.cc (trait_expr_value, finish_trait_expr): Remove
	CPTK_IS_CONSTEVAL_ONLY handling.
	* cp-trait.def (__builtin_is_consteval_only): Remove.
	* metafns.h: Regenerate.
	* reflect.cc (eval_is_consteval_only_type): Remove.
	(process_metafunction): Don't handle METAFN_IS_CONSTEVAL_ONLY_TYPE.
gcc/testsuite/
	* g++.dg/reflect/is_consteval_only1.C: Remove.
	* g++.dg/reflect/eh1.C: Remove is_consteval_only_type tests.
	* g++.dg/reflect/eh2.C: Likewise.
	* g++.dg/reflect/type_trait5.C: Likewise.
libstdc++-v3/
	* include/std/type_traits (std::is_consteval_only,
	std::is_consteval_only_v): Remove.
	* include/std/meta (std::meta::is_consteval_only_type): Remove.
	* src/c++23/std.cc.in: Don't export std::is_consteval_only,
	std::is_consteval_only_v and std::meta::is_consteval_only_type.
	* testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc:
	Remove.
	* testsuite/20_util/is_consteval_only/requirements/typedefs.cc:
	Remove.
	* testsuite/20_util/is_consteval_only/value.cc: Remove.
	* testsuite/20_util/variable_templates_for_traits.cc: Remove
	is_consteval_only_v tests.


	Jakub
  

Comments

Jonathan Wakely March 30, 2026, 9:06 a.m. UTC | #1
On Mon, 30 Mar 2026 at 06:45, Jakub Jelinek <jakub@redhat.com> wrote:
>
> Hi!
>
> The following patch implements LWG4555.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?

The library parts are OK, thanks.


>
> 2026-03-30  Jakub Jelinek  <jakub@redhat.com>
>
> gcc/cp/
>         * constraint.cc (diagnose_trait_expr): Remove CPTK_IS_CONSTEVAL_ONLY
>         handling.
>         * metafns.gperf (enum metafn_code): Remove
>         METAFN_IS_CONSTEVAL_ONLY_TYPE.
>         (is_consteval_only_type): Remove.
>         * semantics.cc (trait_expr_value, finish_trait_expr): Remove
>         CPTK_IS_CONSTEVAL_ONLY handling.
>         * cp-trait.def (__builtin_is_consteval_only): Remove.
>         * metafns.h: Regenerate.
>         * reflect.cc (eval_is_consteval_only_type): Remove.
>         (process_metafunction): Don't handle METAFN_IS_CONSTEVAL_ONLY_TYPE.
> gcc/testsuite/
>         * g++.dg/reflect/is_consteval_only1.C: Remove.
>         * g++.dg/reflect/eh1.C: Remove is_consteval_only_type tests.
>         * g++.dg/reflect/eh2.C: Likewise.
>         * g++.dg/reflect/type_trait5.C: Likewise.
> libstdc++-v3/
>         * include/std/type_traits (std::is_consteval_only,
>         std::is_consteval_only_v): Remove.
>         * include/std/meta (std::meta::is_consteval_only_type): Remove.
>         * src/c++23/std.cc.in: Don't export std::is_consteval_only,
>         std::is_consteval_only_v and std::meta::is_consteval_only_type.
>         * testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc:
>         Remove.
>         * testsuite/20_util/is_consteval_only/requirements/typedefs.cc:
>         Remove.
>         * testsuite/20_util/is_consteval_only/value.cc: Remove.
>         * testsuite/20_util/variable_templates_for_traits.cc: Remove
>         is_consteval_only_v tests.
>
> --- gcc/cp/constraint.cc.jj     2026-03-29 19:50:27.020010287 +0200
> +++ gcc/cp/constraint.cc        2026-03-29 19:51:08.738364941 +0200
> @@ -3354,9 +3354,6 @@ diagnose_trait_expr (location_t loc, tre
>      case CPTK_IS_VOLATILE:
>        inform (loc, "%qT is not a volatile type", t1);
>        break;
> -    case CPTK_IS_CONSTEVAL_ONLY:
> -      inform (decl_loc, "%qT is not consteval-only", t1);
> -      break;
>      case CPTK_IS_STRUCTURAL:
>        inform (decl_loc, "%qT is not a structural type", t1);
>        structural_type_p (t1, /*explain=*/true);
> --- gcc/cp/metafns.gperf.jj     2026-03-29 19:50:27.020246940 +0200
> +++ gcc/cp/metafns.gperf        2026-03-29 19:51:42.277802736 +0200
> @@ -171,7 +171,6 @@ enum metafn_code {
>    METAFN_IS_ABSTRACT_TYPE,
>    METAFN_IS_FINAL_TYPE,
>    METAFN_IS_AGGREGATE_TYPE,
> -  METAFN_IS_CONSTEVAL_ONLY_TYPE,
>    METAFN_IS_STRUCTURAL_TYPE,
>    METAFN_IS_SIGNED_TYPE,
>    METAFN_IS_UNSIGNED_TYPE,
> @@ -607,7 +606,6 @@ is_polymorphic_type, METAFN_IS_POLYMORPH
>  is_abstract_type, METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,
>  is_final_type, METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,
>  is_aggregate_type, METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,
> -is_consteval_only_type, METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,
>  is_structural_type, METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,
>  is_signed_type, METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
>  is_unsigned_type, METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
> --- gcc/cp/semantics.cc.jj      2026-03-29 19:50:27.019243777 +0200
> +++ gcc/cp/semantics.cc 2026-03-29 19:52:30.059003151 +0200
> @@ -14170,9 +14170,6 @@ trait_expr_value (cp_trait_kind kind, tr
>      case CPTK_IS_DEDUCIBLE:
>        return type_targs_deducible_from (type1, type2);
>
> -    case CPTK_IS_CONSTEVAL_ONLY:
> -      return consteval_only_p (type1);
> -
>      case CPTK_IS_STRUCTURAL:
>        return structural_type_p (type1);
>
> @@ -14356,7 +14353,6 @@ finish_trait_expr (location_t loc, cp_tr
>      case CPTK_IS_STD_LAYOUT:
>      case CPTK_IS_TRIVIAL:
>      case CPTK_IS_TRIVIALLY_COPYABLE:
> -    case CPTK_IS_CONSTEVAL_ONLY:
>      case CPTK_IS_STRUCTURAL:
>      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
>        if (!check_trait_type (type1, /* kind = */ 2))
> --- gcc/cp/cp-trait.def.jj      2026-03-29 19:50:27.018581875 +0200
> +++ gcc/cp/cp-trait.def 2026-03-29 19:51:23.560115964 +0200
> @@ -69,7 +69,6 @@ DEFTRAIT_EXPR (IS_BASE_OF, "__is_base_of
>  DEFTRAIT_EXPR (IS_BOUNDED_ARRAY, "__is_bounded_array", 1)
>  DEFTRAIT_EXPR (IS_CLASS, "__is_class", 1)
>  DEFTRAIT_EXPR (IS_CONST, "__is_const", 1)
> -DEFTRAIT_EXPR (IS_CONSTEVAL_ONLY, "__builtin_is_consteval_only", 1)
>  DEFTRAIT_EXPR (IS_CONSTRUCTIBLE, "__is_constructible", -1)
>  DEFTRAIT_EXPR (IS_CONVERTIBLE, "__is_convertible", 2)
>  DEFTRAIT_EXPR (IS_DESTRUCTIBLE, "__is_destructible", 1)
> --- gcc/cp/metafns.h.jj 2026-03-29 19:50:27.023033266 +0200
> +++ gcc/cp/metafns.h    2026-03-29 19:51:54.873368136 +0200
> @@ -199,7 +199,6 @@ enum metafn_code {
>    METAFN_IS_ABSTRACT_TYPE,
>    METAFN_IS_FINAL_TYPE,
>    METAFN_IS_AGGREGATE_TYPE,
> -  METAFN_IS_CONSTEVAL_ONLY_TYPE,
>    METAFN_IS_STRUCTURAL_TYPE,
>    METAFN_IS_SIGNED_TYPE,
>    METAFN_IS_UNSIGNED_TYPE,
> @@ -473,7 +472,7 @@ enum metafn_kind {
>      = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
>        | METAFN_KIND_RET_U8STRING_VIEW
>  };
> -#line 449 "metafns.gperf"
> +#line 448 "metafns.gperf"
>  struct metafn_info
>  {
>    /* A name within "std::meta::" (or "std::meta::access_context::").  */
> @@ -584,7 +583,7 @@ metafn_lookup::find (const char *str, si
>  {
>    enum
>      {
> -      TOTAL_KEYWORDS = 235,
> +      TOTAL_KEYWORDS = 234,
>        MIN_WORD_LENGTH = 4,
>        MAX_WORD_LENGTH = 40,
>        MIN_HASH_VALUE = 36,
> @@ -597,475 +596,473 @@ metafn_lookup::find (const char *str, si
>  #endif
>    static const struct metafn_info wordlist[] =
>      {
> -#line 498 "metafns.gperf"
> +#line 497 "metafns.gperf"
>        {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
> -#line 650 "metafns.gperf"
> +#line 648 "metafns.gperf"
>        {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
> -#line 579 "metafns.gperf"
> +#line 578 "metafns.gperf"
>        {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 584 "metafns.gperf"
> +#line 583 "metafns.gperf"
>        {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 490 "metafns.gperf"
> +#line 489 "metafns.gperf"
>        {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
> -#line 536 "metafns.gperf"
> +#line 535 "metafns.gperf"
>        {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
> -#line 543 "metafns.gperf"
> +#line 542 "metafns.gperf"
>        {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
> -#line 504 "metafns.gperf"
> +#line 503 "metafns.gperf"
>        {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
> -#line 656 "metafns.gperf"
> +#line 654 "metafns.gperf"
>        {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 635 "metafns.gperf"
> +#line 633 "metafns.gperf"
>        {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
> -#line 661 "metafns.gperf"
> +#line 659 "metafns.gperf"
>        {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
> -#line 640 "metafns.gperf"
> +#line 638 "metafns.gperf"
>        {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 662 "metafns.gperf"
> +#line 660 "metafns.gperf"
>        {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
> -#line 637 "metafns.gperf"
> +#line 635 "metafns.gperf"
>        {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 653 "metafns.gperf"
> +#line 651 "metafns.gperf"
>        {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 641 "metafns.gperf"
> +#line 639 "metafns.gperf"
>        {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 638 "metafns.gperf"
> +#line 636 "metafns.gperf"
>        {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 528 "metafns.gperf"
> +#line 527 "metafns.gperf"
>        {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 688 "metafns.gperf"
> +#line 686 "metafns.gperf"
>        {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
> -#line 580 "metafns.gperf"
> +#line 579 "metafns.gperf"
>        {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 505 "metafns.gperf"
> +#line 504 "metafns.gperf"
>        {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
> -#line 496 "metafns.gperf"
> +#line 495 "metafns.gperf"
>        {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
> -#line 473 "metafns.gperf"
> +#line 472 "metafns.gperf"
>        {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
> -#line 485 "metafns.gperf"
> +#line 484 "metafns.gperf"
>        {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
> -#line 568 "metafns.gperf"
> +#line 567 "metafns.gperf"
>        {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
> -#line 689 "metafns.gperf"
> +#line 687 "metafns.gperf"
>        {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
> -#line 545 "metafns.gperf"
> +#line 544 "metafns.gperf"
>        {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
> -#line 606 "metafns.gperf"
> +#line 605 "metafns.gperf"
>        {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 475 "metafns.gperf"
> +#line 474 "metafns.gperf"
>        {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
> -#line 509 "metafns.gperf"
> +#line 508 "metafns.gperf"
>        {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
> -#line 506 "metafns.gperf"
> +#line 505 "metafns.gperf"
>        {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
> -#line 658 "metafns.gperf"
> +#line 656 "metafns.gperf"
>        {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 614 "metafns.gperf"
> +#line 612 "metafns.gperf"
>        {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 489 "metafns.gperf"
> +#line 488 "metafns.gperf"
>        {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
> -#line 535 "metafns.gperf"
> +#line 534 "metafns.gperf"
>        {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
> -#line 652 "metafns.gperf"
> +#line 650 "metafns.gperf"
>        {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 559 "metafns.gperf"
> +#line 558 "metafns.gperf"
>        {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
> -#line 544 "metafns.gperf"
> +#line 543 "metafns.gperf"
>        {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
> -#line 527 "metafns.gperf"
> +#line 526 "metafns.gperf"
>        {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 639 "metafns.gperf"
> +#line 637 "metafns.gperf"
>        {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 510 "metafns.gperf"
> +#line 509 "metafns.gperf"
>        {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
> -#line 644 "metafns.gperf"
> +#line 642 "metafns.gperf"
>        {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 655 "metafns.gperf"
> +#line 653 "metafns.gperf"
>        {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 645 "metafns.gperf"
> +#line 643 "metafns.gperf"
>        {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 524 "metafns.gperf"
> +#line 523 "metafns.gperf"
>        {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
> -#line 526 "metafns.gperf"
> +#line 525 "metafns.gperf"
>        {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 636 "metafns.gperf"
> +#line 634 "metafns.gperf"
>        {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 569 "metafns.gperf"
> +#line 568 "metafns.gperf"
>        {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
> -#line 531 "metafns.gperf"
> +#line 530 "metafns.gperf"
>        {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 462 "metafns.gperf"
> +#line 461 "metafns.gperf"
>        {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
> -#line 690 "metafns.gperf"
> +#line 688 "metafns.gperf"
>        {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
> -#line 619 "metafns.gperf"
> +#line 617 "metafns.gperf"
>        {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 501 "metafns.gperf"
> +#line 500 "metafns.gperf"
>        {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
> -#line 525 "metafns.gperf"
> +#line 524 "metafns.gperf"
>        {"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,},
> -#line 617 "metafns.gperf"
> +#line 615 "metafns.gperf"
>        {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
> -#line 470 "metafns.gperf"
> +#line 469 "metafns.gperf"
>        {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
> -#line 622 "metafns.gperf"
> +#line 620 "metafns.gperf"
>        {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 686 "metafns.gperf"
> +#line 684 "metafns.gperf"
>        {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
> -#line 507 "metafns.gperf"
> +#line 506 "metafns.gperf"
>        {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
> -#line 516 "metafns.gperf"
> +#line 515 "metafns.gperf"
>        {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
> -#line 552 "metafns.gperf"
> +#line 551 "metafns.gperf"
>        {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
> -#line 593 "metafns.gperf"
> +#line 592 "metafns.gperf"
>        {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 596 "metafns.gperf"
> +#line 595 "metafns.gperf"
>        {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 657 "metafns.gperf"
> +#line 655 "metafns.gperf"
>        {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 567 "metafns.gperf"
> +#line 566 "metafns.gperf"
>        {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
> -#line 519 "metafns.gperf"
> +#line 518 "metafns.gperf"
>        {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
> -#line 693 "metafns.gperf"
> +#line 691 "metafns.gperf"
>        {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
> -#line 680 "metafns.gperf"
> +#line 678 "metafns.gperf"
>        {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
> -#line 534 "metafns.gperf"
> +#line 533 "metafns.gperf"
>        {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 681 "metafns.gperf"
> +#line 679 "metafns.gperf"
>        {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
> -#line 565 "metafns.gperf"
> +#line 564 "metafns.gperf"
>        {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
> -#line 687 "metafns.gperf"
> +#line 685 "metafns.gperf"
>        {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
> -#line 573 "metafns.gperf"
> +#line 572 "metafns.gperf"
>        {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
> -#line 625 "metafns.gperf"
> +#line 623 "metafns.gperf"
>        {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 620 "metafns.gperf"
> +#line 618 "metafns.gperf"
>        {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 514 "metafns.gperf"
> +#line 513 "metafns.gperf"
>        {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
> -#line 643 "metafns.gperf"
> +#line 641 "metafns.gperf"
>        {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 594 "metafns.gperf"
> +#line 593 "metafns.gperf"
>        {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 642 "metafns.gperf"
> +#line 640 "metafns.gperf"
>        {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 600 "metafns.gperf"
> +#line 599 "metafns.gperf"
>        {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 623 "metafns.gperf"
> +#line 621 "metafns.gperf"
>        {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 517 "metafns.gperf"
> +#line 516 "metafns.gperf"
>        {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
> -#line 551 "metafns.gperf"
> +#line 550 "metafns.gperf"
>        {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
> -#line 520 "metafns.gperf"
> +#line 519 "metafns.gperf"
>        {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
> -#line 621 "metafns.gperf"
> +#line 619 "metafns.gperf"
>        {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 539 "metafns.gperf"
> +#line 538 "metafns.gperf"
>        {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
> -#line 603 "metafns.gperf"
> +#line 602 "metafns.gperf"
>        {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 518 "metafns.gperf"
> +#line 517 "metafns.gperf"
>        {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
> -#line 540 "metafns.gperf"
> +#line 539 "metafns.gperf"
>        {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
> -#line 558 "metafns.gperf"
> +#line 557 "metafns.gperf"
>        {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
> -#line 627 "metafns.gperf"
> +#line 625 "metafns.gperf"
>        {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
> -#line 632 "metafns.gperf"
> +#line 630 "metafns.gperf"
>        {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 609 "metafns.gperf"
> +#line 608 "metafns.gperf"
>        {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 629 "metafns.gperf"
> +#line 627 "metafns.gperf"
>        {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 586 "metafns.gperf"
> +#line 585 "metafns.gperf"
>        {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 646 "metafns.gperf"
> +#line 644 "metafns.gperf"
>        {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
> -#line 651 "metafns.gperf"
> +#line 649 "metafns.gperf"
>        {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
> -#line 589 "metafns.gperf"
> +#line 588 "metafns.gperf"
>        {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 549 "metafns.gperf"
> +#line 548 "metafns.gperf"
>        {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
> -#line 529 "metafns.gperf"
> +#line 528 "metafns.gperf"
>        {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 513 "metafns.gperf"
> +#line 512 "metafns.gperf"
>        {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
> -#line 474 "metafns.gperf"
> +#line 473 "metafns.gperf"
>        {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
> -#line 585 "metafns.gperf"
> +#line 584 "metafns.gperf"
>        {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 541 "metafns.gperf"
> +#line 540 "metafns.gperf"
>        {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
> -#line 503 "metafns.gperf"
> +#line 502 "metafns.gperf"
>        {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
> -#line 494 "metafns.gperf"
> +#line 493 "metafns.gperf"
>        {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
> -#line 595 "metafns.gperf"
> +#line 594 "metafns.gperf"
>        {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 546 "metafns.gperf"
> +#line 545 "metafns.gperf"
>        {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
> -#line 477 "metafns.gperf"
> +#line 476 "metafns.gperf"
>        {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
> -#line 677 "metafns.gperf"
> +#line 675 "metafns.gperf"
>        {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
> -#line 618 "metafns.gperf"
> +#line 616 "metafns.gperf"
>        {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 522 "metafns.gperf"
> +#line 521 "metafns.gperf"
>        {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
> -#line 624 "metafns.gperf"
> +#line 622 "metafns.gperf"
>        {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 499 "metafns.gperf"
> +#line 498 "metafns.gperf"
>        {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
> -#line 598 "metafns.gperf"
> +#line 597 "metafns.gperf"
>        {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 671 "metafns.gperf"
> +#line 669 "metafns.gperf"
>        {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
> -#line 491 "metafns.gperf"
> +#line 490 "metafns.gperf"
>        {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
> -#line 508 "metafns.gperf"
> +#line 507 "metafns.gperf"
>        {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
> -#line 684 "metafns.gperf"
> +#line 682 "metafns.gperf"
>        {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
> -#line 633 "metafns.gperf"
> +#line 631 "metafns.gperf"
>        {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 630 "metafns.gperf"
> +#line 628 "metafns.gperf"
>        {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 515 "metafns.gperf"
> +#line 514 "metafns.gperf"
>        {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
> -#line 487 "metafns.gperf"
> +#line 486 "metafns.gperf"
>        {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
> -#line 537 "metafns.gperf"
> +#line 536 "metafns.gperf"
>        {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
> -#line 682 "metafns.gperf"
> +#line 680 "metafns.gperf"
>        {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
> -#line 521 "metafns.gperf"
> +#line 520 "metafns.gperf"
>        {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
> -#line 605 "metafns.gperf"
> +#line 604 "metafns.gperf"
>        {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 588 "metafns.gperf"
> +#line 587 "metafns.gperf"
>        {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 465 "metafns.gperf"
> +#line 464 "metafns.gperf"
>        {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
> -#line 597 "metafns.gperf"
> +#line 596 "metafns.gperf"
>        {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 602 "metafns.gperf"
> +#line 601 "metafns.gperf"
>        {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 668 "metafns.gperf"
> +#line 666 "metafns.gperf"
>        {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
> -#line 574 "metafns.gperf"
> +#line 573 "metafns.gperf"
>        {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
> -#line 571 "metafns.gperf"
> +#line 570 "metafns.gperf"
>        {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
> -#line 631 "metafns.gperf"
> +#line 629 "metafns.gperf"
>        {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 670 "metafns.gperf"
> +#line 668 "metafns.gperf"
>        {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
> -#line 667 "metafns.gperf"
> +#line 665 "metafns.gperf"
>        {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
> -#line 673 "metafns.gperf"
> +#line 671 "metafns.gperf"
>        {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
> -#line 563 "metafns.gperf"
> +#line 562 "metafns.gperf"
>        {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
> -#line 626 "metafns.gperf"
> +#line 624 "metafns.gperf"
>        {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 550 "metafns.gperf"
> +#line 549 "metafns.gperf"
>        {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
> -#line 659 "metafns.gperf"
> +#line 657 "metafns.gperf"
>        {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
> -#line 666 "metafns.gperf"
> +#line 664 "metafns.gperf"
>        {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
> -#line 570 "metafns.gperf"
> +#line 569 "metafns.gperf"
>        {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
> -#line 530 "metafns.gperf"
> +#line 529 "metafns.gperf"
>        {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 601 "metafns.gperf"
> +#line 600 "metafns.gperf"
>        {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 634 "metafns.gperf"
> +#line 632 "metafns.gperf"
>        {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 484 "metafns.gperf"
> +#line 483 "metafns.gperf"
>        {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
> -#line 554 "metafns.gperf"
> +#line 553 "metafns.gperf"
>        {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
> -#line 660 "metafns.gperf"
> +#line 658 "metafns.gperf"
>        {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
> -#line 502 "metafns.gperf"
> +#line 501 "metafns.gperf"
>        {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
> -#line 611 "metafns.gperf"
> +#line 609 "metafns.gperf"
>        {"is_structural_type", METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 628 "metafns.gperf"
> +#line 626 "metafns.gperf"
>        {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 478 "metafns.gperf"
> +#line 477 "metafns.gperf"
>        {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
> -#line 461 "metafns.gperf"
> +#line 460 "metafns.gperf"
>        {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
> -#line 592 "metafns.gperf"
> +#line 591 "metafns.gperf"
>        {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 665 "metafns.gperf"
> +#line 663 "metafns.gperf"
>        {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
> -#line 616 "metafns.gperf"
> +#line 614 "metafns.gperf"
>        {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 538 "metafns.gperf"
> +#line 537 "metafns.gperf"
>        {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
> -#line 562 "metafns.gperf"
> +#line 561 "metafns.gperf"
>        {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
> -#line 564 "metafns.gperf"
> +#line 563 "metafns.gperf"
>        {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
> -#line 669 "metafns.gperf"
> +#line 667 "metafns.gperf"
>        {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
> -#line 467 "metafns.gperf"
> +#line 466 "metafns.gperf"
>        {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
> -#line 523 "metafns.gperf"
> +#line 522 "metafns.gperf"
>        {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
> -#line 577 "metafns.gperf"
> +#line 576 "metafns.gperf"
>        {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
> -#line 674 "metafns.gperf"
> +#line 672 "metafns.gperf"
>        {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
> -#line 488 "metafns.gperf"
> +#line 487 "metafns.gperf"
>        {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
> -#line 493 "metafns.gperf"
> +#line 492 "metafns.gperf"
>        {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
> -#line 480 "metafns.gperf"
> +#line 479 "metafns.gperf"
>        {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
> -#line 468 "metafns.gperf"
> +#line 467 "metafns.gperf"
>        {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
> -#line 481 "metafns.gperf"
> +#line 480 "metafns.gperf"
>        {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
> -#line 587 "metafns.gperf"
> +#line 586 "metafns.gperf"
>        {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 582 "metafns.gperf"
> +#line 581 "metafns.gperf"
>        {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 492 "metafns.gperf"
> +#line 491 "metafns.gperf"
>        {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
> -#line 500 "metafns.gperf"
> +#line 499 "metafns.gperf"
>        {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
> -#line 678 "metafns.gperf"
> +#line 676 "metafns.gperf"
>        {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
> -#line 471 "metafns.gperf"
> +#line 470 "metafns.gperf"
>        {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
> -#line 610 "metafns.gperf"
> -      {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 676 "metafns.gperf"
> +#line 674 "metafns.gperf"
>        {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
> -#line 553 "metafns.gperf"
> +#line 552 "metafns.gperf"
>        {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
> -#line 472 "metafns.gperf"
> +#line 471 "metafns.gperf"
>        {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
> -#line 649 "metafns.gperf"
> +#line 647 "metafns.gperf"
>        {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 663 "metafns.gperf"
> +#line 661 "metafns.gperf"
>        {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
> -#line 591 "metafns.gperf"
> +#line 590 "metafns.gperf"
>        {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 576 "metafns.gperf"
> +#line 575 "metafns.gperf"
>        {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
> -#line 675 "metafns.gperf"
> +#line 673 "metafns.gperf"
>        {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
> -#line 542 "metafns.gperf"
> +#line 541 "metafns.gperf"
>        {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
> -#line 495 "metafns.gperf"
> +#line 494 "metafns.gperf"
>        {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
> -#line 476 "metafns.gperf"
> +#line 475 "metafns.gperf"
>        {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
> -#line 548 "metafns.gperf"
> +#line 547 "metafns.gperf"
>        {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
> -#line 647 "metafns.gperf"
> +#line 645 "metafns.gperf"
>        {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
> -#line 654 "metafns.gperf"
> +#line 652 "metafns.gperf"
>        {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 648 "metafns.gperf"
> +#line 646 "metafns.gperf"
>        {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
> -#line 533 "metafns.gperf"
> +#line 532 "metafns.gperf"
>        {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 672 "metafns.gperf"
> +#line 670 "metafns.gperf"
>        {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
> -#line 583 "metafns.gperf"
> +#line 582 "metafns.gperf"
>        {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 612 "metafns.gperf"
> +#line 610 "metafns.gperf"
>        {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 599 "metafns.gperf"
> +#line 598 "metafns.gperf"
>        {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 479 "metafns.gperf"
> +#line 478 "metafns.gperf"
>        {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
> -#line 512 "metafns.gperf"
> +#line 511 "metafns.gperf"
>        {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
> -#line 607 "metafns.gperf"
> +#line 606 "metafns.gperf"
>        {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 483 "metafns.gperf"
> +#line 482 "metafns.gperf"
>        {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
> -#line 464 "metafns.gperf"
> +#line 463 "metafns.gperf"
>        {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
> -#line 556 "metafns.gperf"
> +#line 555 "metafns.gperf"
>        {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
> -#line 557 "metafns.gperf"
> +#line 556 "metafns.gperf"
>        {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
> -#line 683 "metafns.gperf"
> +#line 681 "metafns.gperf"
>        {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
> -#line 511 "metafns.gperf"
> +#line 510 "metafns.gperf"
>        {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
> -#line 555 "metafns.gperf"
> +#line 554 "metafns.gperf"
>        {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
> -#line 694 "metafns.gperf"
> +#line 692 "metafns.gperf"
>        {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
> -#line 695 "metafns.gperf"
> +#line 693 "metafns.gperf"
>        {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
> -#line 532 "metafns.gperf"
> +#line 531 "metafns.gperf"
>        {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
> -#line 664 "metafns.gperf"
> +#line 662 "metafns.gperf"
>        {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
> -#line 575 "metafns.gperf"
> +#line 574 "metafns.gperf"
>        {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
> -#line 578 "metafns.gperf"
> +#line 577 "metafns.gperf"
>        {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
> -#line 581 "metafns.gperf"
> +#line 580 "metafns.gperf"
>        {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 572 "metafns.gperf"
> +#line 571 "metafns.gperf"
>        {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
> -#line 679 "metafns.gperf"
> +#line 677 "metafns.gperf"
>        {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
> -#line 685 "metafns.gperf"
> +#line 683 "metafns.gperf"
>        {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
> -#line 463 "metafns.gperf"
> +#line 462 "metafns.gperf"
>        {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
> -#line 497 "metafns.gperf"
> +#line 496 "metafns.gperf"
>        {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
> -#line 615 "metafns.gperf"
> +#line 613 "metafns.gperf"
>        {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 566 "metafns.gperf"
> +#line 565 "metafns.gperf"
>        {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
> -#line 604 "metafns.gperf"
> +#line 603 "metafns.gperf"
>        {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 486 "metafns.gperf"
> +#line 485 "metafns.gperf"
>        {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
> -#line 547 "metafns.gperf"
> +#line 546 "metafns.gperf"
>        {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
> -#line 561 "metafns.gperf"
> +#line 560 "metafns.gperf"
>        {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
> -#line 469 "metafns.gperf"
> +#line 468 "metafns.gperf"
>        {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
> -#line 560 "metafns.gperf"
> +#line 559 "metafns.gperf"
>        {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
> -#line 692 "metafns.gperf"
> +#line 690 "metafns.gperf"
>        {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
> -#line 466 "metafns.gperf"
> +#line 465 "metafns.gperf"
>        {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
> -#line 590 "metafns.gperf"
> +#line 589 "metafns.gperf"
>        {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 608 "metafns.gperf"
> +#line 607 "metafns.gperf"
>        {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
> -#line 691 "metafns.gperf"
> +#line 689 "metafns.gperf"
>        {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
> -#line 482 "metafns.gperf"
> +#line 481 "metafns.gperf"
>        {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},
> -#line 613 "metafns.gperf"
> +#line 611 "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)
> @@ -1118,45 +1115,45 @@ metafn_lookup::find (const char *str, si
>         -1,  -1,  -1,  -1,  -1, 168,  -1,  -1,  -1, 169,
>         -1,  -1, 170,  -1, 171,  -1,  -1, 172, 173,  -1,
>        174, 175,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 176,
> -       -1,  -1, 177, 178, 179,  -1, 180,  -1,  -1, 181,
> -       -1, 182,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 183,
> -       -1, 184, 185,  -1,  -1,  -1, 186,  -1,  -1,  -1,
> -      187,  -1,  -1,  -1,  -1,  -1, 188,  -1,  -1,  -1,
> -      189,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1, 190,  -1,  -1,  -1,  -1,  -1,  -1, 191,
> -       -1, 192,  -1,  -1, 193,  -1, 194,  -1,  -1, 195,
> -      196,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1, 197,  -1, 198, 199,  -1, 200,  -1,  -1,
> -       -1, 201,  -1, 202,  -1,  -1, 203,  -1,  -1,  -1,
> -       -1, 204,  -1, 205,  -1,  -1,  -1,  -1,  -1,  -1,
> -      206,  -1,  -1, 207,  -1, 208,  -1, 209,  -1,  -1,
> -       -1,  -1,  -1,  -1, 210,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 211,
> -       -1,  -1,  -1, 212,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1, 213, 214,  -1,  -1, 215,  -1,  -1,  -1,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1, 216, 217,  -1,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1, 218,  -1, 219,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 220,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1, 221, 222,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 223,  -1,
> +       -1,  -1,  -1, 177, 178,  -1, 179,  -1,  -1, 180,
> +       -1, 181,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 182,
> +       -1, 183, 184,  -1,  -1,  -1, 185,  -1,  -1,  -1,
> +      186,  -1,  -1,  -1,  -1,  -1, 187,  -1,  -1,  -1,
> +      188,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> +       -1,  -1, 189,  -1,  -1,  -1,  -1,  -1,  -1, 190,
> +       -1, 191,  -1,  -1, 192,  -1, 193,  -1,  -1, 194,
> +      195,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> +       -1,  -1, 196,  -1, 197, 198,  -1, 199,  -1,  -1,
> +       -1, 200,  -1, 201,  -1,  -1, 202,  -1,  -1,  -1,
> +       -1, 203,  -1, 204,  -1,  -1,  -1,  -1,  -1,  -1,
> +      205,  -1,  -1, 206,  -1, 207,  -1, 208,  -1,  -1,
> +       -1,  -1,  -1,  -1, 209,  -1,  -1,  -1,  -1,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 210,
> +       -1,  -1,  -1, 211,  -1,  -1,  -1,  -1,  -1,  -1,
> +       -1, 212, 213,  -1,  -1, 214,  -1,  -1,  -1,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1, 215, 216,  -1,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1, 217,  -1, 218,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 219,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1, 220, 221,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 222,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 224,  -1,
> -      225,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 226,  -1,
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 223,  -1,
> +      224,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 225,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1,  -1, 227,  -1,  -1,  -1,  -1,  -1,  -1,
> +       -1,  -1,  -1, 226,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -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, 230,
> +       -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,  -1,  -1,  -1, 229,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -      231,  -1,  -1,  -1, 232,  -1,  -1,  -1,  -1,  -1,
> +      230,  -1,  -1,  -1, 231,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1, 233,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> +       -1, 232,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> @@ -1164,7 +1161,7 @@ metafn_lookup::find (const char *str, si
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
>         -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
> -       -1,  -1,  -1,  -1,  -1,  -1,  -1, 234
> +       -1,  -1,  -1,  -1,  -1,  -1,  -1, 233
>      };
>
>    if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
> --- gcc/cp/reflect.cc.jj        2026-03-29 19:50:27.020664116 +0200
> +++ gcc/cp/reflect.cc   2026-03-29 19:53:03.700440180 +0200
> @@ -4320,17 +4320,6 @@ eval_is_aggregate_type (tree type)
>      return boolean_false_node;
>  }
>
> -/* Process std::meta::is_consteval_only_type.  */
> -
> -static tree
> -eval_is_consteval_only_type (tree type)
> -{
> -  if (consteval_only_p (type))
> -    return boolean_true_node;
> -  else
> -    return boolean_false_node;
> -}
> -
>  /* Process std::meta::is_structural_type.  */
>
>  static tree
> @@ -7826,8 +7815,6 @@ process_metafunction (const constexpr_ct
>        return eval_is_final_type (loc, h);
>      case METAFN_IS_AGGREGATE_TYPE:
>        return eval_is_aggregate_type (h);
> -    case METAFN_IS_CONSTEVAL_ONLY_TYPE:
> -      return eval_is_consteval_only_type (h);
>      case METAFN_IS_STRUCTURAL_TYPE:
>        return eval_is_structural_type (loc, h);
>      case METAFN_IS_SIGNED_TYPE:
> --- gcc/testsuite/g++.dg/reflect/is_consteval_only1.C.jj        2026-01-15 22:16:55.087661597 +0100
> +++ gcc/testsuite/g++.dg/reflect/is_consteval_only1.C   2026-03-29 19:54:18.812183232 +0200
> @@ -1,83 +0,0 @@
> -// { dg-do compile { target c++26 } }
> -// { dg-additional-options "-freflection" }
> -// Test std::meta::is_consteval_only.
> -
> -#include <meta>
> -using namespace std::meta;
> -
> -struct A {
> -  info i;
> -};
> -struct B : A { };
> -struct C : virtual A { };
> -struct D : B { };
> -struct E { };
> -struct F : E {
> -  info i;
> -};
> -template<typename T>
> -struct G {
> -  T t;
> -  using size_type = int;
> -};
> -struct H {
> -  G<info>::size_type sz;
> -};
> -struct I {
> -  std::initializer_list<std::meta::info>::size_type sz;
> -};
> -template<typename T>
> -struct J : T { };
> -
> -template<typename T>
> -using U = J<T>;
> -
> -template<typename T>
> -struct K {
> -  J<T> j;
> -};
> -
> -template<typename T>
> -struct L {
> -  U<T> u;
> -};
> -
> -template<typename T>
> -struct M : J<T> { };
> -
> -template<typename>
> -struct N { };
> -
> -static_assert (is_consteval_only_type (^^A));
> -static_assert (is_consteval_only_type (^^B));
> -static_assert (is_consteval_only_type (^^C));
> -static_assert (is_consteval_only_type (^^D));
> -static_assert (!is_consteval_only_type (^^E));
> -static_assert (is_consteval_only_type (^^F));
> -static_assert (!is_consteval_only_type (^^G<int>));
> -static_assert (is_consteval_only_type (^^G<info>));
> -static_assert (!is_consteval_only_type (^^H));
> -static_assert (!is_consteval_only_type (^^I));
> -static_assert (!is_consteval_only_type (^^J<E>));
> -static_assert (is_consteval_only_type (^^J<A>));
> -static_assert (!is_consteval_only_type (^^U<E>));
> -static_assert (is_consteval_only_type (^^U<A>));
> -static_assert (!is_consteval_only_type (^^K<E>));
> -static_assert (is_consteval_only_type (^^K<A>));
> -static_assert (!is_consteval_only_type (^^L<E>));
> -static_assert (is_consteval_only_type (^^L<A>));
> -static_assert (!is_consteval_only_type (^^M<E>));
> -static_assert (is_consteval_only_type (^^M<A>));
> -static_assert (!is_consteval_only_type (^^N<E>));
> -static_assert (!is_consteval_only_type (^^N<A>));
> -
> -static_assert (is_consteval_only_type (^^std::meta::exception));
> -static_assert (is_consteval_only_type (^^std::meta::access_context));
> -static_assert (!is_consteval_only_type (^^std::meta::member_offset));
> -static_assert (is_consteval_only_type (^^std::meta::data_member_options));
> -static_assert (is_consteval_only_type (type_of (^^std::meta::data_member_options::name)));
> -
> -struct O;
> -static_assert (!is_consteval_only_type (^^O));
> -struct O { info i; };
> -static_assert (is_consteval_only_type (^^O));
> --- gcc/testsuite/g++.dg/reflect/eh1.C.jj       2026-03-29 19:50:27.021207558 +0200
> +++ gcc/testsuite/g++.dg/reflect/eh1.C  2026-03-29 19:53:51.667637480 +0200
> @@ -146,9 +146,6 @@ eval (int n)
>      case 46:
>        is_aggregate_type (^^n);
>        break;
> -    case 47:
> -      is_consteval_only_type (^^n);
> -      break;
>      case 48:
>        is_signed_type (^^n);
>        break;
> @@ -319,7 +316,6 @@ static_assert (test (43));
>  static_assert (test (44));
>  static_assert (test (45));
>  static_assert (test (46));
> -static_assert (test (47));
>  static_assert (test (48));
>  static_assert (test (49));
>  static_assert (test (50));
> --- gcc/testsuite/g++.dg/reflect/eh2.C.jj       2026-03-29 19:50:27.021307802 +0200
> +++ gcc/testsuite/g++.dg/reflect/eh2.C  2026-03-29 19:54:04.528422264 +0200
> @@ -52,7 +52,6 @@ static_assert ((is_polymorphic_type (^^i
>  static_assert ((is_abstract_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
>  static_assert ((is_final_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
>  static_assert ((is_aggregate_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
> -static_assert ((is_consteval_only_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
>  static_assert ((is_signed_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
>  static_assert ((is_unsigned_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
>  static_assert ((is_bounded_array_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
> --- gcc/testsuite/g++.dg/reflect/type_trait5.C.jj       2026-01-15 22:16:55.093661496 +0100
> +++ gcc/testsuite/g++.dg/reflect/type_trait5.C  2026-03-29 19:55:35.655897300 +0200
> @@ -207,13 +207,6 @@ namespace N
>    void foo ();
>  }
>
> -int v = 1;
> -struct S1 { decltype (^^long) a; };
> -union U2 { int a; decltype (^^N::foo) b; };
> -struct S3 { const decltype (^^N) *c; };
> -struct S4 : public S3 {};
> -struct S5 { int a; long *b; };
> -
>  static_assert (is_const_type (^^const int));
>  static_assert (is_const_type (^^const volatile int));
>  static_assert (is_const_type (^^cClassType));
> @@ -339,17 +332,6 @@ static_assert (!is_aggregate_type (^^Enu
>  static_assert (!is_aggregate_type (^^void));
>  static_assert (!is_aggregate_type (^^NoexceptMoveAssignClass));
>
> -static_assert (is_consteval_only_type (^^decltype (^^long)));
> -static_assert (is_consteval_only_type (^^const decltype (^^N::foo)));
> -static_assert (is_consteval_only_type (^^volatile decltype (^^N)));
> -static_assert (is_consteval_only_type (^^const volatile decltype (^^v)));
> -static_assert (is_consteval_only_type (^^const S1));
> -static_assert (is_consteval_only_type (^^U2));
> -static_assert (is_consteval_only_type (^^S3));
> -static_assert (is_consteval_only_type (^^S4));
> -static_assert (!is_consteval_only_type (^^int));
> -static_assert (!is_consteval_only_type (^^S5));
> -
>  static_assert (!is_signed_type (^^void));
>  static_assert (char (-1) < char (0) ? is_signed_type (^^char) : !is_signed_type (^^char));
>  static_assert (is_signed_type (^^signed char));
> --- libstdc++-v3/include/std/type_traits.jj     2026-03-29 19:50:27.021971047 +0200
> +++ libstdc++-v3/include/std/type_traits        2026-03-29 19:58:18.652169670 +0200
> @@ -3907,24 +3907,6 @@ template<typename _Ret, typename _Fn, ty
>  # endif
>  #endif
>
> -#if __cpp_impl_reflection >= 202506L \
> -    && _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only) // C++ >= 26
> -  /// is_consteval_only - true if the type is consteval-only.
> -  /// @since C++26
> -  template<typename _Tp>
> -    struct is_consteval_only
> -    : bool_constant<__builtin_is_consteval_only(_Tp)>
> -    { };
> -
> -  /** is_consteval_only_v - true if the type is consteval-only.
> -   *  @ingroup variable_templates
> -   *  @since C++26
> -   */
> -  template<typename _Tp>
> -    inline constexpr bool is_consteval_only_v
> -      = __builtin_is_consteval_only(_Tp);
> -#endif
> -
>  #if __cpp_lib_is_structural >= 202603L // C++ >= 26
>    /// is_structural - true if the type is a structural type.
>    /// @since C++26
> --- libstdc++-v3/include/std/meta.jj    2026-03-29 19:50:27.022240238 +0200
> +++ libstdc++-v3/include/std/meta       2026-03-29 19:57:54.694570582 +0200
> @@ -464,7 +464,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
>      consteval bool is_abstract_type(info);
>      consteval bool is_final_type(info);
>      consteval bool is_aggregate_type(info);
> -    consteval bool is_consteval_only_type(info);
>  #if __glibcxx_is_structural >= 202603L
>      consteval bool is_structural_type(info);
>  #endif
> --- libstdc++-v3/src/c++23/std.cc.in.jj 2026-03-29 19:50:27.022436063 +0200
> +++ libstdc++-v3/src/c++23/std.cc.in    2026-03-29 19:58:52.381605228 +0200
> @@ -2250,7 +2250,6 @@ export namespace std
>      using std::meta::is_abstract_type;
>      using std::meta::is_final_type;
>      using std::meta::is_aggregate_type;
> -    using std::meta::is_consteval_only_type;
>  #if __glibcxx_is_structural >= 202603L
>      using std::meta::is_structural_type;
>  #endif
> @@ -3572,10 +3571,6 @@ export namespace std
>  #if __cpp_impl_reflection >= 202506L
>    using std::is_reflection;
>    using std::is_reflection_v;
> -#if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only)
> -  using std::is_consteval_only;
> -  using std::is_consteval_only_v;
> -#endif
>  #endif
>  #if __glibcxx_is_structural >= 202603L
>    using std::is_structural;
> --- libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc.jj  2026-01-15 22:16:55.114661142 +0100
> +++ libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc     2026-03-29 19:59:34.337903117 +0200
> @@ -1,12 +0,0 @@
> -// { dg-do compile { target c++26 } }
> -// { dg-additional-options "-freflection" }
> -
> -// NB: This file is for testing type_traits with NO OTHER INCLUDES.
> -
> -#include <type_traits>
> -
> -namespace std
> -{
> -  typedef short test_type;
> -  template struct is_consteval_only<test_type>;
> -}
> --- libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc.jj        2026-01-15 22:16:55.114661142 +0100
> +++ libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc   2026-03-29 19:59:32.657931230 +0200
> @@ -1,16 +0,0 @@
> -// { dg-do compile { target c++26 } }
> -// { dg-additional-options "-freflection" }
> -
> -// NB: This file is for testing type_traits with NO OTHER INCLUDES.
> -
> -#include <type_traits>
> -
> -void test01()
> -{
> -  // Check for required typedefs
> -  typedef std::is_consteval_only<decltype (^^int)> test_type;
> -  typedef test_type::value_type               value_type;
> -  typedef test_type::type                     type;
> -  typedef test_type::type::value_type         type_value_type;
> -  typedef test_type::type::type               type_type;
> -}
> --- libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc.jj        2026-01-15 22:16:55.114661142 +0100
> +++ libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc   2026-03-29 19:59:27.021025559 +0200
> @@ -1,30 +0,0 @@
> -// { dg-do compile { target c++26 } }
> -// { dg-additional-options "-freflection" }
> -
> -#include <type_traits>
> -#include <testsuite_tr1.h>
> -
> -void test01()
> -{
> -  using std::is_consteval_only;
> -  using namespace __gnu_test;
> -  int v = 1;
> -  struct S1 { decltype(^^long) a; };
> -  union U2 { int a; decltype(^^test01) b; };
> -  struct S3 { const decltype(^^__gnu_test) *c; };
> -  struct S4 : public S3 {};
> -  struct S5 { int a; long *b; };
> -
> -  static_assert(test_category<is_consteval_only, decltype(^^long)>(true), "");
> -  static_assert(test_category<is_consteval_only, const decltype(^^test01)>(true), "");
> -  static_assert(test_category<is_consteval_only, volatile decltype(^^__gnu_test)>(true), "");
> -  static_assert(test_category<is_consteval_only, const volatile decltype(^^v)>(true), "");
> -  static_assert(test_category<is_consteval_only, const S1>(true), "");
> -  static_assert(test_category<is_consteval_only, U2>(true), "");
> -  static_assert(test_category<is_consteval_only, S3>(true), "");
> -  static_assert(test_category<is_consteval_only, S4>(true), "");
> -
> -  // Sanity check.
> -  static_assert(test_category<is_consteval_only, int>(false), "");
> -  static_assert(test_category<is_consteval_only, S5>(false), "");
> -}
> --- libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc.jj  2026-03-29 19:50:27.022894595 +0200
> +++ libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc     2026-03-29 19:59:54.133571835 +0200
> @@ -335,9 +335,6 @@ static_assert(!is_convertible_v<const in
>  static_assert(is_reflection_v<decltype(^^int)>
>               && is_reflection<decltype(^^int)>::value, "");
>  static_assert(!is_reflection_v<int> && !is_reflection<int>::value, "");
> -static_assert(is_consteval_only_v<decltype(^^int)>
> -             && is_consteval_only<decltype(^^int)>::value, "");
> -static_assert(!is_consteval_only_v<int> && !is_consteval_only<int>::value, "");
>  #endif
>
>  #if __cpp_lib_is_structural >= 202603L
>
>         Jakub
>
  
Jakub Jelinek April 7, 2026, 6:40 p.m. UTC | #2
Hi!

On Mon, Mar 30, 2026 at 10:06:22AM +0100, Jonathan Wakely wrote:
> On Mon, 30 Mar 2026 at 06:45, Jakub Jelinek <jakub@redhat.com> wrote:
> >
> > Hi!
> >
> > The following patch implements LWG4555.
> >
> > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
> 
> The library parts are OK, thanks.

I'd like to ping this patch:
https://gcc.gnu.org/pipermail/gcc-patches/2026-March/711684.html

Thanks.

> > 2026-03-30  Jakub Jelinek  <jakub@redhat.com>
> >
> > gcc/cp/
> >         * constraint.cc (diagnose_trait_expr): Remove CPTK_IS_CONSTEVAL_ONLY
> >         handling.
> >         * metafns.gperf (enum metafn_code): Remove
> >         METAFN_IS_CONSTEVAL_ONLY_TYPE.
> >         (is_consteval_only_type): Remove.
> >         * semantics.cc (trait_expr_value, finish_trait_expr): Remove
> >         CPTK_IS_CONSTEVAL_ONLY handling.
> >         * cp-trait.def (__builtin_is_consteval_only): Remove.
> >         * metafns.h: Regenerate.
> >         * reflect.cc (eval_is_consteval_only_type): Remove.
> >         (process_metafunction): Don't handle METAFN_IS_CONSTEVAL_ONLY_TYPE.
> > gcc/testsuite/
> >         * g++.dg/reflect/is_consteval_only1.C: Remove.
> >         * g++.dg/reflect/eh1.C: Remove is_consteval_only_type tests.
> >         * g++.dg/reflect/eh2.C: Likewise.
> >         * g++.dg/reflect/type_trait5.C: Likewise.
> > libstdc++-v3/
> >         * include/std/type_traits (std::is_consteval_only,
> >         std::is_consteval_only_v): Remove.
> >         * include/std/meta (std::meta::is_consteval_only_type): Remove.
> >         * src/c++23/std.cc.in: Don't export std::is_consteval_only,
> >         std::is_consteval_only_v and std::meta::is_consteval_only_type.
> >         * testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc:
> >         Remove.
> >         * testsuite/20_util/is_consteval_only/requirements/typedefs.cc:
> >         Remove.
> >         * testsuite/20_util/is_consteval_only/value.cc: Remove.
> >         * testsuite/20_util/variable_templates_for_traits.cc: Remove
> >         is_consteval_only_v tests.

	Jakub
  
Jason Merrill April 7, 2026, 8:29 p.m. UTC | #3
On 4/7/26 2:40 PM, Jakub Jelinek wrote:
> Hi!
> 
> On Mon, Mar 30, 2026 at 10:06:22AM +0100, Jonathan Wakely wrote:
>> On Mon, 30 Mar 2026 at 06:45, Jakub Jelinek <jakub@redhat.com> wrote:
>>>
>>> Hi!
>>>
>>> The following patch implements LWG4555.
>>>
>>> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>>
>> The library parts are OK, thanks.
> 
> I'd like to ping this patch:
> https://gcc.gnu.org/pipermail/gcc-patches/2026-March/711684.html

OK.

Jason
  

Patch

--- gcc/cp/constraint.cc.jj	2026-03-29 19:50:27.020010287 +0200
+++ gcc/cp/constraint.cc	2026-03-29 19:51:08.738364941 +0200
@@ -3354,9 +3354,6 @@  diagnose_trait_expr (location_t loc, tre
     case CPTK_IS_VOLATILE:
       inform (loc, "%qT is not a volatile type", t1);
       break;
-    case CPTK_IS_CONSTEVAL_ONLY:
-      inform (decl_loc, "%qT is not consteval-only", t1);
-      break;
     case CPTK_IS_STRUCTURAL:
       inform (decl_loc, "%qT is not a structural type", t1);
       structural_type_p (t1, /*explain=*/true);
--- gcc/cp/metafns.gperf.jj	2026-03-29 19:50:27.020246940 +0200
+++ gcc/cp/metafns.gperf	2026-03-29 19:51:42.277802736 +0200
@@ -171,7 +171,6 @@  enum metafn_code {
   METAFN_IS_ABSTRACT_TYPE,
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
-  METAFN_IS_CONSTEVAL_ONLY_TYPE,
   METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
@@ -607,7 +606,6 @@  is_polymorphic_type, METAFN_IS_POLYMORPH
 is_abstract_type, METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,
 is_final_type, METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_aggregate_type, METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,
-is_consteval_only_type, METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,
 is_structural_type, METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,
 is_signed_type, METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
 is_unsigned_type, METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,
--- gcc/cp/semantics.cc.jj	2026-03-29 19:50:27.019243777 +0200
+++ gcc/cp/semantics.cc	2026-03-29 19:52:30.059003151 +0200
@@ -14170,9 +14170,6 @@  trait_expr_value (cp_trait_kind kind, tr
     case CPTK_IS_DEDUCIBLE:
       return type_targs_deducible_from (type1, type2);
 
-    case CPTK_IS_CONSTEVAL_ONLY:
-      return consteval_only_p (type1);
-
     case CPTK_IS_STRUCTURAL:
       return structural_type_p (type1);
 
@@ -14356,7 +14353,6 @@  finish_trait_expr (location_t loc, cp_tr
     case CPTK_IS_STD_LAYOUT:
     case CPTK_IS_TRIVIAL:
     case CPTK_IS_TRIVIALLY_COPYABLE:
-    case CPTK_IS_CONSTEVAL_ONLY:
     case CPTK_IS_STRUCTURAL:
     case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
       if (!check_trait_type (type1, /* kind = */ 2))
--- gcc/cp/cp-trait.def.jj	2026-03-29 19:50:27.018581875 +0200
+++ gcc/cp/cp-trait.def	2026-03-29 19:51:23.560115964 +0200
@@ -69,7 +69,6 @@  DEFTRAIT_EXPR (IS_BASE_OF, "__is_base_of
 DEFTRAIT_EXPR (IS_BOUNDED_ARRAY, "__is_bounded_array", 1)
 DEFTRAIT_EXPR (IS_CLASS, "__is_class", 1)
 DEFTRAIT_EXPR (IS_CONST, "__is_const", 1)
-DEFTRAIT_EXPR (IS_CONSTEVAL_ONLY, "__builtin_is_consteval_only", 1)
 DEFTRAIT_EXPR (IS_CONSTRUCTIBLE, "__is_constructible", -1)
 DEFTRAIT_EXPR (IS_CONVERTIBLE, "__is_convertible", 2)
 DEFTRAIT_EXPR (IS_DESTRUCTIBLE, "__is_destructible", 1)
--- gcc/cp/metafns.h.jj	2026-03-29 19:50:27.023033266 +0200
+++ gcc/cp/metafns.h	2026-03-29 19:51:54.873368136 +0200
@@ -199,7 +199,6 @@  enum metafn_code {
   METAFN_IS_ABSTRACT_TYPE,
   METAFN_IS_FINAL_TYPE,
   METAFN_IS_AGGREGATE_TYPE,
-  METAFN_IS_CONSTEVAL_ONLY_TYPE,
   METAFN_IS_STRUCTURAL_TYPE,
   METAFN_IS_SIGNED_TYPE,
   METAFN_IS_UNSIGNED_TYPE,
@@ -473,7 +472,7 @@  enum metafn_kind {
     = (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
       | METAFN_KIND_RET_U8STRING_VIEW
 };
-#line 449 "metafns.gperf"
+#line 448 "metafns.gperf"
 struct metafn_info
 {
   /* A name within "std::meta::" (or "std::meta::access_context::").  */
@@ -584,7 +583,7 @@  metafn_lookup::find (const char *str, si
 {
   enum
     {
-      TOTAL_KEYWORDS = 235,
+      TOTAL_KEYWORDS = 234,
       MIN_WORD_LENGTH = 4,
       MAX_WORD_LENGTH = 40,
       MIN_HASH_VALUE = 36,
@@ -597,475 +596,473 @@  metafn_lookup::find (const char *str, si
 #endif
   static const struct metafn_info wordlist[] =
     {
-#line 498 "metafns.gperf"
+#line 497 "metafns.gperf"
       {"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 650 "metafns.gperf"
+#line 648 "metafns.gperf"
       {"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
-#line 579 "metafns.gperf"
+#line 578 "metafns.gperf"
       {"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 584 "metafns.gperf"
+#line 583 "metafns.gperf"
       {"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 490 "metafns.gperf"
+#line 489 "metafns.gperf"
       {"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
-#line 536 "metafns.gperf"
+#line 535 "metafns.gperf"
       {"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
-#line 543 "metafns.gperf"
+#line 542 "metafns.gperf"
       {"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
-#line 504 "metafns.gperf"
+#line 503 "metafns.gperf"
       {"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
-#line 656 "metafns.gperf"
+#line 654 "metafns.gperf"
       {"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 635 "metafns.gperf"
+#line 633 "metafns.gperf"
       {"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 661 "metafns.gperf"
+#line 659 "metafns.gperf"
       {"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 640 "metafns.gperf"
+#line 638 "metafns.gperf"
       {"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 662 "metafns.gperf"
+#line 660 "metafns.gperf"
       {"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 637 "metafns.gperf"
+#line 635 "metafns.gperf"
       {"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 653 "metafns.gperf"
+#line 651 "metafns.gperf"
       {"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 641 "metafns.gperf"
+#line 639 "metafns.gperf"
       {"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 638 "metafns.gperf"
+#line 636 "metafns.gperf"
       {"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 528 "metafns.gperf"
+#line 527 "metafns.gperf"
       {"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 688 "metafns.gperf"
+#line 686 "metafns.gperf"
       {"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 580 "metafns.gperf"
+#line 579 "metafns.gperf"
       {"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 505 "metafns.gperf"
+#line 504 "metafns.gperf"
       {"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 496 "metafns.gperf"
+#line 495 "metafns.gperf"
       {"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 473 "metafns.gperf"
+#line 472 "metafns.gperf"
       {"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
-#line 485 "metafns.gperf"
+#line 484 "metafns.gperf"
       {"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
-#line 568 "metafns.gperf"
+#line 567 "metafns.gperf"
       {"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
-#line 689 "metafns.gperf"
+#line 687 "metafns.gperf"
       {"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 545 "metafns.gperf"
+#line 544 "metafns.gperf"
       {"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
-#line 606 "metafns.gperf"
+#line 605 "metafns.gperf"
       {"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 475 "metafns.gperf"
+#line 474 "metafns.gperf"
       {"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
-#line 509 "metafns.gperf"
+#line 508 "metafns.gperf"
       {"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 506 "metafns.gperf"
+#line 505 "metafns.gperf"
       {"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
-#line 658 "metafns.gperf"
+#line 656 "metafns.gperf"
       {"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 614 "metafns.gperf"
+#line 612 "metafns.gperf"
       {"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 489 "metafns.gperf"
+#line 488 "metafns.gperf"
       {"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
-#line 535 "metafns.gperf"
+#line 534 "metafns.gperf"
       {"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
-#line 652 "metafns.gperf"
+#line 650 "metafns.gperf"
       {"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 559 "metafns.gperf"
+#line 558 "metafns.gperf"
       {"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 544 "metafns.gperf"
+#line 543 "metafns.gperf"
       {"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
-#line 527 "metafns.gperf"
+#line 526 "metafns.gperf"
       {"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 639 "metafns.gperf"
+#line 637 "metafns.gperf"
       {"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 510 "metafns.gperf"
+#line 509 "metafns.gperf"
       {"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 644 "metafns.gperf"
+#line 642 "metafns.gperf"
       {"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 655 "metafns.gperf"
+#line 653 "metafns.gperf"
       {"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 645 "metafns.gperf"
+#line 643 "metafns.gperf"
       {"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 524 "metafns.gperf"
+#line 523 "metafns.gperf"
       {"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
-#line 526 "metafns.gperf"
+#line 525 "metafns.gperf"
       {"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 636 "metafns.gperf"
+#line 634 "metafns.gperf"
       {"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 569 "metafns.gperf"
+#line 568 "metafns.gperf"
       {"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 531 "metafns.gperf"
+#line 530 "metafns.gperf"
       {"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 462 "metafns.gperf"
+#line 461 "metafns.gperf"
       {"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
-#line 690 "metafns.gperf"
+#line 688 "metafns.gperf"
       {"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
-#line 619 "metafns.gperf"
+#line 617 "metafns.gperf"
       {"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 501 "metafns.gperf"
+#line 500 "metafns.gperf"
       {"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 525 "metafns.gperf"
+#line 524 "metafns.gperf"
       {"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 617 "metafns.gperf"
+#line 615 "metafns.gperf"
       {"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 470 "metafns.gperf"
+#line 469 "metafns.gperf"
       {"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 622 "metafns.gperf"
+#line 620 "metafns.gperf"
       {"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 686 "metafns.gperf"
+#line 684 "metafns.gperf"
       {"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
-#line 507 "metafns.gperf"
+#line 506 "metafns.gperf"
       {"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 516 "metafns.gperf"
+#line 515 "metafns.gperf"
       {"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 552 "metafns.gperf"
+#line 551 "metafns.gperf"
       {"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
-#line 593 "metafns.gperf"
+#line 592 "metafns.gperf"
       {"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 596 "metafns.gperf"
+#line 595 "metafns.gperf"
       {"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 657 "metafns.gperf"
+#line 655 "metafns.gperf"
       {"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 567 "metafns.gperf"
+#line 566 "metafns.gperf"
       {"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 519 "metafns.gperf"
+#line 518 "metafns.gperf"
       {"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 693 "metafns.gperf"
+#line 691 "metafns.gperf"
       {"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
-#line 680 "metafns.gperf"
+#line 678 "metafns.gperf"
       {"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 534 "metafns.gperf"
+#line 533 "metafns.gperf"
       {"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 681 "metafns.gperf"
+#line 679 "metafns.gperf"
       {"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
-#line 565 "metafns.gperf"
+#line 564 "metafns.gperf"
       {"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 687 "metafns.gperf"
+#line 685 "metafns.gperf"
       {"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
-#line 573 "metafns.gperf"
+#line 572 "metafns.gperf"
       {"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 625 "metafns.gperf"
+#line 623 "metafns.gperf"
       {"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 620 "metafns.gperf"
+#line 618 "metafns.gperf"
       {"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 514 "metafns.gperf"
+#line 513 "metafns.gperf"
       {"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 643 "metafns.gperf"
+#line 641 "metafns.gperf"
       {"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 594 "metafns.gperf"
+#line 593 "metafns.gperf"
       {"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 642 "metafns.gperf"
+#line 640 "metafns.gperf"
       {"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 600 "metafns.gperf"
+#line 599 "metafns.gperf"
       {"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 623 "metafns.gperf"
+#line 621 "metafns.gperf"
       {"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 517 "metafns.gperf"
+#line 516 "metafns.gperf"
       {"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 551 "metafns.gperf"
+#line 550 "metafns.gperf"
       {"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 520 "metafns.gperf"
+#line 519 "metafns.gperf"
       {"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 621 "metafns.gperf"
+#line 619 "metafns.gperf"
       {"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 539 "metafns.gperf"
+#line 538 "metafns.gperf"
       {"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 603 "metafns.gperf"
+#line 602 "metafns.gperf"
       {"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 518 "metafns.gperf"
+#line 517 "metafns.gperf"
       {"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
-#line 540 "metafns.gperf"
+#line 539 "metafns.gperf"
       {"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 558 "metafns.gperf"
+#line 557 "metafns.gperf"
       {"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 627 "metafns.gperf"
+#line 625 "metafns.gperf"
       {"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 632 "metafns.gperf"
+#line 630 "metafns.gperf"
       {"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 609 "metafns.gperf"
+#line 608 "metafns.gperf"
       {"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 629 "metafns.gperf"
+#line 627 "metafns.gperf"
       {"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 586 "metafns.gperf"
+#line 585 "metafns.gperf"
       {"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 646 "metafns.gperf"
+#line 644 "metafns.gperf"
       {"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
-#line 651 "metafns.gperf"
+#line 649 "metafns.gperf"
       {"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
-#line 589 "metafns.gperf"
+#line 588 "metafns.gperf"
       {"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 549 "metafns.gperf"
+#line 548 "metafns.gperf"
       {"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
-#line 529 "metafns.gperf"
+#line 528 "metafns.gperf"
       {"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 513 "metafns.gperf"
+#line 512 "metafns.gperf"
       {"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 474 "metafns.gperf"
+#line 473 "metafns.gperf"
       {"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
-#line 585 "metafns.gperf"
+#line 584 "metafns.gperf"
       {"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 541 "metafns.gperf"
+#line 540 "metafns.gperf"
       {"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 503 "metafns.gperf"
+#line 502 "metafns.gperf"
       {"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 494 "metafns.gperf"
+#line 493 "metafns.gperf"
       {"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 595 "metafns.gperf"
+#line 594 "metafns.gperf"
       {"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 546 "metafns.gperf"
+#line 545 "metafns.gperf"
       {"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
-#line 477 "metafns.gperf"
+#line 476 "metafns.gperf"
       {"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 677 "metafns.gperf"
+#line 675 "metafns.gperf"
       {"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 618 "metafns.gperf"
+#line 616 "metafns.gperf"
       {"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 522 "metafns.gperf"
+#line 521 "metafns.gperf"
       {"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 624 "metafns.gperf"
+#line 622 "metafns.gperf"
       {"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 499 "metafns.gperf"
+#line 498 "metafns.gperf"
       {"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 598 "metafns.gperf"
+#line 597 "metafns.gperf"
       {"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 671 "metafns.gperf"
+#line 669 "metafns.gperf"
       {"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 491 "metafns.gperf"
+#line 490 "metafns.gperf"
       {"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 508 "metafns.gperf"
+#line 507 "metafns.gperf"
       {"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
-#line 684 "metafns.gperf"
+#line 682 "metafns.gperf"
       {"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 633 "metafns.gperf"
+#line 631 "metafns.gperf"
       {"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 630 "metafns.gperf"
+#line 628 "metafns.gperf"
       {"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 515 "metafns.gperf"
+#line 514 "metafns.gperf"
       {"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 487 "metafns.gperf"
+#line 486 "metafns.gperf"
       {"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
-#line 537 "metafns.gperf"
+#line 536 "metafns.gperf"
       {"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
-#line 682 "metafns.gperf"
+#line 680 "metafns.gperf"
       {"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
-#line 521 "metafns.gperf"
+#line 520 "metafns.gperf"
       {"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
-#line 605 "metafns.gperf"
+#line 604 "metafns.gperf"
       {"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 588 "metafns.gperf"
+#line 587 "metafns.gperf"
       {"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 465 "metafns.gperf"
+#line 464 "metafns.gperf"
       {"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 597 "metafns.gperf"
+#line 596 "metafns.gperf"
       {"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 602 "metafns.gperf"
+#line 601 "metafns.gperf"
       {"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 668 "metafns.gperf"
+#line 666 "metafns.gperf"
       {"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
-#line 574 "metafns.gperf"
+#line 573 "metafns.gperf"
       {"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 571 "metafns.gperf"
+#line 570 "metafns.gperf"
       {"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
-#line 631 "metafns.gperf"
+#line 629 "metafns.gperf"
       {"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 670 "metafns.gperf"
+#line 668 "metafns.gperf"
       {"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 667 "metafns.gperf"
+#line 665 "metafns.gperf"
       {"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 673 "metafns.gperf"
+#line 671 "metafns.gperf"
       {"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
-#line 563 "metafns.gperf"
+#line 562 "metafns.gperf"
       {"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 626 "metafns.gperf"
+#line 624 "metafns.gperf"
       {"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 550 "metafns.gperf"
+#line 549 "metafns.gperf"
       {"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 659 "metafns.gperf"
+#line 657 "metafns.gperf"
       {"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
-#line 666 "metafns.gperf"
+#line 664 "metafns.gperf"
       {"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
-#line 570 "metafns.gperf"
+#line 569 "metafns.gperf"
       {"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 530 "metafns.gperf"
+#line 529 "metafns.gperf"
       {"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 601 "metafns.gperf"
+#line 600 "metafns.gperf"
       {"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 634 "metafns.gperf"
+#line 632 "metafns.gperf"
       {"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 484 "metafns.gperf"
+#line 483 "metafns.gperf"
       {"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
-#line 554 "metafns.gperf"
+#line 553 "metafns.gperf"
       {"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 660 "metafns.gperf"
+#line 658 "metafns.gperf"
       {"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
-#line 502 "metafns.gperf"
+#line 501 "metafns.gperf"
       {"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
-#line 611 "metafns.gperf"
+#line 609 "metafns.gperf"
       {"is_structural_type", METAFN_IS_STRUCTURAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 628 "metafns.gperf"
+#line 626 "metafns.gperf"
       {"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 478 "metafns.gperf"
+#line 477 "metafns.gperf"
       {"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
-#line 461 "metafns.gperf"
+#line 460 "metafns.gperf"
       {"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
-#line 592 "metafns.gperf"
+#line 591 "metafns.gperf"
       {"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 665 "metafns.gperf"
+#line 663 "metafns.gperf"
       {"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
-#line 616 "metafns.gperf"
+#line 614 "metafns.gperf"
       {"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 538 "metafns.gperf"
+#line 537 "metafns.gperf"
       {"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
-#line 562 "metafns.gperf"
+#line 561 "metafns.gperf"
       {"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 564 "metafns.gperf"
+#line 563 "metafns.gperf"
       {"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
-#line 669 "metafns.gperf"
+#line 667 "metafns.gperf"
       {"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
-#line 467 "metafns.gperf"
+#line 466 "metafns.gperf"
       {"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
-#line 523 "metafns.gperf"
+#line 522 "metafns.gperf"
       {"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
-#line 577 "metafns.gperf"
+#line 576 "metafns.gperf"
       {"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
-#line 674 "metafns.gperf"
+#line 672 "metafns.gperf"
       {"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
-#line 488 "metafns.gperf"
+#line 487 "metafns.gperf"
       {"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
-#line 493 "metafns.gperf"
+#line 492 "metafns.gperf"
       {"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
-#line 480 "metafns.gperf"
+#line 479 "metafns.gperf"
       {"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
-#line 468 "metafns.gperf"
+#line 467 "metafns.gperf"
       {"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 481 "metafns.gperf"
+#line 480 "metafns.gperf"
       {"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
-#line 587 "metafns.gperf"
+#line 586 "metafns.gperf"
       {"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 582 "metafns.gperf"
+#line 581 "metafns.gperf"
       {"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 492 "metafns.gperf"
+#line 491 "metafns.gperf"
       {"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
-#line 500 "metafns.gperf"
+#line 499 "metafns.gperf"
       {"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 678 "metafns.gperf"
+#line 676 "metafns.gperf"
       {"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
-#line 471 "metafns.gperf"
+#line 470 "metafns.gperf"
       {"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
-#line 610 "metafns.gperf"
-      {"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 676 "metafns.gperf"
+#line 674 "metafns.gperf"
       {"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
-#line 553 "metafns.gperf"
+#line 552 "metafns.gperf"
       {"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
-#line 472 "metafns.gperf"
+#line 471 "metafns.gperf"
       {"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
-#line 649 "metafns.gperf"
+#line 647 "metafns.gperf"
       {"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 663 "metafns.gperf"
+#line 661 "metafns.gperf"
       {"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
-#line 591 "metafns.gperf"
+#line 590 "metafns.gperf"
       {"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 576 "metafns.gperf"
+#line 575 "metafns.gperf"
       {"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
-#line 675 "metafns.gperf"
+#line 673 "metafns.gperf"
       {"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
-#line 542 "metafns.gperf"
+#line 541 "metafns.gperf"
       {"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
-#line 495 "metafns.gperf"
+#line 494 "metafns.gperf"
       {"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
-#line 476 "metafns.gperf"
+#line 475 "metafns.gperf"
       {"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
-#line 548 "metafns.gperf"
+#line 547 "metafns.gperf"
       {"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
-#line 647 "metafns.gperf"
+#line 645 "metafns.gperf"
       {"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
-#line 654 "metafns.gperf"
+#line 652 "metafns.gperf"
       {"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 648 "metafns.gperf"
+#line 646 "metafns.gperf"
       {"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
-#line 533 "metafns.gperf"
+#line 532 "metafns.gperf"
       {"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 672 "metafns.gperf"
+#line 670 "metafns.gperf"
       {"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
-#line 583 "metafns.gperf"
+#line 582 "metafns.gperf"
       {"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 612 "metafns.gperf"
+#line 610 "metafns.gperf"
       {"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 599 "metafns.gperf"
+#line 598 "metafns.gperf"
       {"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 479 "metafns.gperf"
+#line 478 "metafns.gperf"
       {"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
-#line 512 "metafns.gperf"
+#line 511 "metafns.gperf"
       {"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
-#line 607 "metafns.gperf"
+#line 606 "metafns.gperf"
       {"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 483 "metafns.gperf"
+#line 482 "metafns.gperf"
       {"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
-#line 464 "metafns.gperf"
+#line 463 "metafns.gperf"
       {"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
-#line 556 "metafns.gperf"
+#line 555 "metafns.gperf"
       {"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 557 "metafns.gperf"
+#line 556 "metafns.gperf"
       {"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 683 "metafns.gperf"
+#line 681 "metafns.gperf"
       {"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
-#line 511 "metafns.gperf"
+#line 510 "metafns.gperf"
       {"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
-#line 555 "metafns.gperf"
+#line 554 "metafns.gperf"
       {"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
-#line 694 "metafns.gperf"
+#line 692 "metafns.gperf"
       {"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
-#line 695 "metafns.gperf"
+#line 693 "metafns.gperf"
       {"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
-#line 532 "metafns.gperf"
+#line 531 "metafns.gperf"
       {"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
-#line 664 "metafns.gperf"
+#line 662 "metafns.gperf"
       {"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
-#line 575 "metafns.gperf"
+#line 574 "metafns.gperf"
       {"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
-#line 578 "metafns.gperf"
+#line 577 "metafns.gperf"
       {"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
-#line 581 "metafns.gperf"
+#line 580 "metafns.gperf"
       {"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 572 "metafns.gperf"
+#line 571 "metafns.gperf"
       {"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
-#line 679 "metafns.gperf"
+#line 677 "metafns.gperf"
       {"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 685 "metafns.gperf"
+#line 683 "metafns.gperf"
       {"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
-#line 463 "metafns.gperf"
+#line 462 "metafns.gperf"
       {"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
-#line 497 "metafns.gperf"
+#line 496 "metafns.gperf"
       {"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
-#line 615 "metafns.gperf"
+#line 613 "metafns.gperf"
       {"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 566 "metafns.gperf"
+#line 565 "metafns.gperf"
       {"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
-#line 604 "metafns.gperf"
+#line 603 "metafns.gperf"
       {"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 486 "metafns.gperf"
+#line 485 "metafns.gperf"
       {"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
-#line 547 "metafns.gperf"
+#line 546 "metafns.gperf"
       {"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
-#line 561 "metafns.gperf"
+#line 560 "metafns.gperf"
       {"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 469 "metafns.gperf"
+#line 468 "metafns.gperf"
       {"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
-#line 560 "metafns.gperf"
+#line 559 "metafns.gperf"
       {"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
-#line 692 "metafns.gperf"
+#line 690 "metafns.gperf"
       {"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
-#line 466 "metafns.gperf"
+#line 465 "metafns.gperf"
       {"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
-#line 590 "metafns.gperf"
+#line 589 "metafns.gperf"
       {"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 608 "metafns.gperf"
+#line 607 "metafns.gperf"
       {"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
-#line 691 "metafns.gperf"
+#line 689 "metafns.gperf"
       {"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
-#line 482 "metafns.gperf"
+#line 481 "metafns.gperf"
       {"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},
-#line 613 "metafns.gperf"
+#line 611 "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)
@@ -1118,45 +1115,45 @@  metafn_lookup::find (const char *str, si
        -1,  -1,  -1,  -1,  -1, 168,  -1,  -1,  -1, 169,
        -1,  -1, 170,  -1, 171,  -1,  -1, 172, 173,  -1,
       174, 175,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 176,
-       -1,  -1, 177, 178, 179,  -1, 180,  -1,  -1, 181,
-       -1, 182,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 183,
-       -1, 184, 185,  -1,  -1,  -1, 186,  -1,  -1,  -1,
-      187,  -1,  -1,  -1,  -1,  -1, 188,  -1,  -1,  -1,
-      189,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 190,  -1,  -1,  -1,  -1,  -1,  -1, 191,
-       -1, 192,  -1,  -1, 193,  -1, 194,  -1,  -1, 195,
-      196,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 197,  -1, 198, 199,  -1, 200,  -1,  -1,
-       -1, 201,  -1, 202,  -1,  -1, 203,  -1,  -1,  -1,
-       -1, 204,  -1, 205,  -1,  -1,  -1,  -1,  -1,  -1,
-      206,  -1,  -1, 207,  -1, 208,  -1, 209,  -1,  -1,
-       -1,  -1,  -1,  -1, 210,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 211,
-       -1,  -1,  -1, 212,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 213, 214,  -1,  -1, 215,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 216, 217,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 218,  -1, 219,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 220,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 221, 222,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 223,  -1,
+       -1,  -1,  -1, 177, 178,  -1, 179,  -1,  -1, 180,
+       -1, 181,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 182,
+       -1, 183, 184,  -1,  -1,  -1, 185,  -1,  -1,  -1,
+      186,  -1,  -1,  -1,  -1,  -1, 187,  -1,  -1,  -1,
+      188,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 189,  -1,  -1,  -1,  -1,  -1,  -1, 190,
+       -1, 191,  -1,  -1, 192,  -1, 193,  -1,  -1, 194,
+      195,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 196,  -1, 197, 198,  -1, 199,  -1,  -1,
+       -1, 200,  -1, 201,  -1,  -1, 202,  -1,  -1,  -1,
+       -1, 203,  -1, 204,  -1,  -1,  -1,  -1,  -1,  -1,
+      205,  -1,  -1, 206,  -1, 207,  -1, 208,  -1,  -1,
+       -1,  -1,  -1,  -1, 209,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 210,
+       -1,  -1,  -1, 211,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 212, 213,  -1,  -1, 214,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 215, 216,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 217,  -1, 218,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 219,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 220, 221,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 222,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 224,  -1,
-      225,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 226,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 223,  -1,
+      224,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 225,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 227,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 226,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -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, 230,
+       -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,  -1,  -1,  -1, 229,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      231,  -1,  -1,  -1, 232,  -1,  -1,  -1,  -1,  -1,
+      230,  -1,  -1,  -1, 231,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 233,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 232,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
@@ -1164,7 +1161,7 @@  metafn_lookup::find (const char *str, si
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 234
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 233
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
--- gcc/cp/reflect.cc.jj	2026-03-29 19:50:27.020664116 +0200
+++ gcc/cp/reflect.cc	2026-03-29 19:53:03.700440180 +0200
@@ -4320,17 +4320,6 @@  eval_is_aggregate_type (tree type)
     return boolean_false_node;
 }
 
-/* Process std::meta::is_consteval_only_type.  */
-
-static tree
-eval_is_consteval_only_type (tree type)
-{
-  if (consteval_only_p (type))
-    return boolean_true_node;
-  else
-    return boolean_false_node;
-}
-
 /* Process std::meta::is_structural_type.  */
 
 static tree
@@ -7826,8 +7815,6 @@  process_metafunction (const constexpr_ct
       return eval_is_final_type (loc, h);
     case METAFN_IS_AGGREGATE_TYPE:
       return eval_is_aggregate_type (h);
-    case METAFN_IS_CONSTEVAL_ONLY_TYPE:
-      return eval_is_consteval_only_type (h);
     case METAFN_IS_STRUCTURAL_TYPE:
       return eval_is_structural_type (loc, h);
     case METAFN_IS_SIGNED_TYPE:
--- gcc/testsuite/g++.dg/reflect/is_consteval_only1.C.jj	2026-01-15 22:16:55.087661597 +0100
+++ gcc/testsuite/g++.dg/reflect/is_consteval_only1.C	2026-03-29 19:54:18.812183232 +0200
@@ -1,83 +0,0 @@ 
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-// Test std::meta::is_consteval_only.
-
-#include <meta>
-using namespace std::meta;
-
-struct A {
-  info i;
-};
-struct B : A { };
-struct C : virtual A { };
-struct D : B { };
-struct E { };
-struct F : E {
-  info i;
-};
-template<typename T>
-struct G {
-  T t;
-  using size_type = int;
-};
-struct H {
-  G<info>::size_type sz;
-};
-struct I {
-  std::initializer_list<std::meta::info>::size_type sz;
-};
-template<typename T>
-struct J : T { };
-
-template<typename T>
-using U = J<T>;
-
-template<typename T>
-struct K {
-  J<T> j;
-};
-
-template<typename T>
-struct L {
-  U<T> u;
-};
-
-template<typename T>
-struct M : J<T> { };
-
-template<typename>
-struct N { };
-
-static_assert (is_consteval_only_type (^^A));
-static_assert (is_consteval_only_type (^^B));
-static_assert (is_consteval_only_type (^^C));
-static_assert (is_consteval_only_type (^^D));
-static_assert (!is_consteval_only_type (^^E));
-static_assert (is_consteval_only_type (^^F));
-static_assert (!is_consteval_only_type (^^G<int>));
-static_assert (is_consteval_only_type (^^G<info>));
-static_assert (!is_consteval_only_type (^^H));
-static_assert (!is_consteval_only_type (^^I));
-static_assert (!is_consteval_only_type (^^J<E>));
-static_assert (is_consteval_only_type (^^J<A>));
-static_assert (!is_consteval_only_type (^^U<E>));
-static_assert (is_consteval_only_type (^^U<A>));
-static_assert (!is_consteval_only_type (^^K<E>));
-static_assert (is_consteval_only_type (^^K<A>));
-static_assert (!is_consteval_only_type (^^L<E>));
-static_assert (is_consteval_only_type (^^L<A>));
-static_assert (!is_consteval_only_type (^^M<E>));
-static_assert (is_consteval_only_type (^^M<A>));
-static_assert (!is_consteval_only_type (^^N<E>));
-static_assert (!is_consteval_only_type (^^N<A>));
-
-static_assert (is_consteval_only_type (^^std::meta::exception));
-static_assert (is_consteval_only_type (^^std::meta::access_context));
-static_assert (!is_consteval_only_type (^^std::meta::member_offset));
-static_assert (is_consteval_only_type (^^std::meta::data_member_options));
-static_assert (is_consteval_only_type (type_of (^^std::meta::data_member_options::name)));
-
-struct O;
-static_assert (!is_consteval_only_type (^^O));
-struct O { info i; };
-static_assert (is_consteval_only_type (^^O));
--- gcc/testsuite/g++.dg/reflect/eh1.C.jj	2026-03-29 19:50:27.021207558 +0200
+++ gcc/testsuite/g++.dg/reflect/eh1.C	2026-03-29 19:53:51.667637480 +0200
@@ -146,9 +146,6 @@  eval (int n)
     case 46:
       is_aggregate_type (^^n);
       break;
-    case 47:
-      is_consteval_only_type (^^n);
-      break;
     case 48:
       is_signed_type (^^n);
       break;
@@ -319,7 +316,6 @@  static_assert (test (43));
 static_assert (test (44));
 static_assert (test (45));
 static_assert (test (46));
-static_assert (test (47));
 static_assert (test (48));
 static_assert (test (49));
 static_assert (test (50));
--- gcc/testsuite/g++.dg/reflect/eh2.C.jj	2026-03-29 19:50:27.021307802 +0200
+++ gcc/testsuite/g++.dg/reflect/eh2.C	2026-03-29 19:54:04.528422264 +0200
@@ -52,7 +52,6 @@  static_assert ((is_polymorphic_type (^^i
 static_assert ((is_abstract_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_final_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_aggregate_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
-static_assert ((is_consteval_only_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_signed_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_unsigned_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
 static_assert ((is_bounded_array_type (^^i), true)); // { dg-error "non-constant|uncaught exception" }
--- gcc/testsuite/g++.dg/reflect/type_trait5.C.jj	2026-01-15 22:16:55.093661496 +0100
+++ gcc/testsuite/g++.dg/reflect/type_trait5.C	2026-03-29 19:55:35.655897300 +0200
@@ -207,13 +207,6 @@  namespace N
   void foo ();
 }
 
-int v = 1;
-struct S1 { decltype (^^long) a; };
-union U2 { int a; decltype (^^N::foo) b; };
-struct S3 { const decltype (^^N) *c; };
-struct S4 : public S3 {};
-struct S5 { int a; long *b; };
-
 static_assert (is_const_type (^^const int));
 static_assert (is_const_type (^^const volatile int));
 static_assert (is_const_type (^^cClassType));
@@ -339,17 +332,6 @@  static_assert (!is_aggregate_type (^^Enu
 static_assert (!is_aggregate_type (^^void));
 static_assert (!is_aggregate_type (^^NoexceptMoveAssignClass));
 
-static_assert (is_consteval_only_type (^^decltype (^^long)));
-static_assert (is_consteval_only_type (^^const decltype (^^N::foo)));
-static_assert (is_consteval_only_type (^^volatile decltype (^^N)));
-static_assert (is_consteval_only_type (^^const volatile decltype (^^v)));
-static_assert (is_consteval_only_type (^^const S1));
-static_assert (is_consteval_only_type (^^U2));
-static_assert (is_consteval_only_type (^^S3));
-static_assert (is_consteval_only_type (^^S4));
-static_assert (!is_consteval_only_type (^^int));
-static_assert (!is_consteval_only_type (^^S5));
-
 static_assert (!is_signed_type (^^void));
 static_assert (char (-1) < char (0) ? is_signed_type (^^char) : !is_signed_type (^^char));
 static_assert (is_signed_type (^^signed char));
--- libstdc++-v3/include/std/type_traits.jj	2026-03-29 19:50:27.021971047 +0200
+++ libstdc++-v3/include/std/type_traits	2026-03-29 19:58:18.652169670 +0200
@@ -3907,24 +3907,6 @@  template<typename _Ret, typename _Fn, ty
 # endif
 #endif
 
-#if __cpp_impl_reflection >= 202506L \
-    && _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only) // C++ >= 26
-  /// is_consteval_only - true if the type is consteval-only.
-  /// @since C++26
-  template<typename _Tp>
-    struct is_consteval_only
-    : bool_constant<__builtin_is_consteval_only(_Tp)>
-    { };
-
-  /** is_consteval_only_v - true if the type is consteval-only.
-   *  @ingroup variable_templates
-   *  @since C++26
-   */
-  template<typename _Tp>
-    inline constexpr bool is_consteval_only_v
-      = __builtin_is_consteval_only(_Tp);
-#endif
-
 #if __cpp_lib_is_structural >= 202603L // C++ >= 26
   /// is_structural - true if the type is a structural type.
   /// @since C++26
--- libstdc++-v3/include/std/meta.jj	2026-03-29 19:50:27.022240238 +0200
+++ libstdc++-v3/include/std/meta	2026-03-29 19:57:54.694570582 +0200
@@ -464,7 +464,6 @@  _GLIBCXX_BEGIN_NAMESPACE_VERSION
     consteval bool is_abstract_type(info);
     consteval bool is_final_type(info);
     consteval bool is_aggregate_type(info);
-    consteval bool is_consteval_only_type(info);
 #if __glibcxx_is_structural >= 202603L
     consteval bool is_structural_type(info);
 #endif
--- libstdc++-v3/src/c++23/std.cc.in.jj	2026-03-29 19:50:27.022436063 +0200
+++ libstdc++-v3/src/c++23/std.cc.in	2026-03-29 19:58:52.381605228 +0200
@@ -2250,7 +2250,6 @@  export namespace std
     using std::meta::is_abstract_type;
     using std::meta::is_final_type;
     using std::meta::is_aggregate_type;
-    using std::meta::is_consteval_only_type;
 #if __glibcxx_is_structural >= 202603L
     using std::meta::is_structural_type;
 #endif
@@ -3572,10 +3571,6 @@  export namespace std
 #if __cpp_impl_reflection >= 202506L
   using std::is_reflection;
   using std::is_reflection_v;
-#if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_is_consteval_only)
-  using std::is_consteval_only;
-  using std::is_consteval_only_v;
-#endif
 #endif
 #if __glibcxx_is_structural >= 202603L
   using std::is_structural;
--- libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc.jj	2026-01-15 22:16:55.114661142 +0100
+++ libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc	2026-03-29 19:59:34.337903117 +0200
@@ -1,12 +0,0 @@ 
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-namespace std
-{
-  typedef short test_type;
-  template struct is_consteval_only<test_type>;
-}
--- libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc.jj	2026-01-15 22:16:55.114661142 +0100
+++ libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc	2026-03-29 19:59:32.657931230 +0200
@@ -1,16 +0,0 @@ 
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-// NB: This file is for testing type_traits with NO OTHER INCLUDES.
-
-#include <type_traits>
-
-void test01()
-{
-  // Check for required typedefs
-  typedef std::is_consteval_only<decltype (^^int)> test_type;
-  typedef test_type::value_type               value_type;
-  typedef test_type::type                     type;
-  typedef test_type::type::value_type         type_value_type;
-  typedef test_type::type::type               type_type;
-}
--- libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc.jj	2026-01-15 22:16:55.114661142 +0100
+++ libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc	2026-03-29 19:59:27.021025559 +0200
@@ -1,30 +0,0 @@ 
-// { dg-do compile { target c++26 } }
-// { dg-additional-options "-freflection" }
-
-#include <type_traits>
-#include <testsuite_tr1.h>
-
-void test01()
-{
-  using std::is_consteval_only;
-  using namespace __gnu_test;
-  int v = 1;
-  struct S1 { decltype(^^long) a; };
-  union U2 { int a; decltype(^^test01) b; };
-  struct S3 { const decltype(^^__gnu_test) *c; };
-  struct S4 : public S3 {};
-  struct S5 { int a; long *b; };
-
-  static_assert(test_category<is_consteval_only, decltype(^^long)>(true), "");
-  static_assert(test_category<is_consteval_only, const decltype(^^test01)>(true), "");
-  static_assert(test_category<is_consteval_only, volatile decltype(^^__gnu_test)>(true), "");
-  static_assert(test_category<is_consteval_only, const volatile decltype(^^v)>(true), "");
-  static_assert(test_category<is_consteval_only, const S1>(true), "");
-  static_assert(test_category<is_consteval_only, U2>(true), "");
-  static_assert(test_category<is_consteval_only, S3>(true), "");
-  static_assert(test_category<is_consteval_only, S4>(true), "");
-
-  // Sanity check.
-  static_assert(test_category<is_consteval_only, int>(false), "");
-  static_assert(test_category<is_consteval_only, S5>(false), "");
-}
--- libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc.jj	2026-03-29 19:50:27.022894595 +0200
+++ libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc	2026-03-29 19:59:54.133571835 +0200
@@ -335,9 +335,6 @@  static_assert(!is_convertible_v<const in
 static_assert(is_reflection_v<decltype(^^int)>
 	      && is_reflection<decltype(^^int)>::value, "");
 static_assert(!is_reflection_v<int> && !is_reflection<int>::value, "");
-static_assert(is_consteval_only_v<decltype(^^int)>
-	      && is_consteval_only<decltype(^^int)>::value, "");
-static_assert(!is_consteval_only_v<int> && !is_consteval_only<int>::value, "");
 #endif
 
 #if __cpp_lib_is_structural >= 202603L