c++, libstdc++: Remove is_consteval_only* traits
Checks
Commit Message
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
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
>
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
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
@@ -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);
@@ -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,
@@ -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))
@@ -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)
@@ -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)
@@ -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:
@@ -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));
@@ -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));
@@ -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" }
@@ -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));
@@ -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
@@ -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
@@ -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;
@@ -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>;
-}
@@ -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;
-}
@@ -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), "");
-}
@@ -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