From patchwork Mon Mar 30 05:44:54 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Jelinek X-Patchwork-Id: 132436 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 58D3E4BA23FE for ; Mon, 30 Mar 2026 05:45:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 58D3E4BA23FE Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=e7id4jPg X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 7C66A4BA23C2 for ; Mon, 30 Mar 2026 05:45:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7C66A4BA23C2 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7C66A4BA23C2 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774849502; cv=none; b=Bx/HVGoHiDq5Zbg3MO9/SAC9tm0NtYT3zluEZ+F19MgWrCgguHXkZkvdkwXuI/TMg9bE2coUiP7YYnRlsdUfOsEEKpMR7YqItTvdv0XXhsPfRb7I+OAZun0e37bXU7u0z0V4yGoxa6u0QT+stDj8g51aEq9qvvuL7BY22M6eUNw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774849502; c=relaxed/simple; bh=BDVnwvanJp92DQxuY9yBSKWlTJfyEcp5MNo1oXBYgyQ=; h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version; b=Nos3Gpum/ovV13bKRxhrS4ogrXRgcw6IP4sQxk/pxQcMGvb8sfGwWSu+Ir33OvfV0/jKANCeMT+bpK+XccZUydr0VrdEvNcyMDUUFJYMOS1vSFiaBW4VZpYi3iUGUCpHzakHB/ryagPYUMQcU5XmnQaZYA10Tgu5dU1Cb0Th4z0= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7C66A4BA23C2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1774849502; h=from:from:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type; bh=iYxFIksjGPnj6b6CUQZ/ctHP0aG+dZSvrMq/pM+NurI=; b=e7id4jPgmaqzsPDe3JsFgrKoCpEVdKtIL3r8xiVyd29r90m/nqOGl/UA2tB/OHDRYc0epv IeOFWiJ7XnPH8snAv/1BZ9wUImB7V56soLOhXrba4ky+q1SiSZNlr6xFGPXAnHgvtIM+RD gdA2mf/Vjg3Gwr9yusS75RaISmFHkvw= Received: from mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-470--MpEXhuCOwu1Ey0HlDUtOw-1; Mon, 30 Mar 2026 01:44:59 -0400 X-MC-Unique: -MpEXhuCOwu1Ey0HlDUtOw-1 X-Mimecast-MFC-AGG-ID: -MpEXhuCOwu1Ey0HlDUtOw_1774849499 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 17F281956048 for ; Mon, 30 Mar 2026 05:44:59 +0000 (UTC) Received: from tucnak.zalov.cz (unknown [10.44.32.9]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E7FA630001A1; Mon, 30 Mar 2026 05:44:57 +0000 (UTC) Received: from tucnak.zalov.cz (localhost [127.0.0.1]) by tucnak.zalov.cz (8.18.1/8.18.1) with ESMTPS id 62U5it2H501937 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 30 Mar 2026 07:44:55 +0200 Received: (from jakub@localhost) by tucnak.zalov.cz (8.18.1/8.18.1/Submit) id 62U5isDJ501936; Mon, 30 Mar 2026 07:44:54 +0200 Date: Mon, 30 Mar 2026 07:44:54 +0200 From: Jakub Jelinek To: Jason Merrill , Marek Polacek , Jonathan Wakely Cc: gcc-patches@gcc.gnu.org Subject: [PATCH] c++, libstdc++: Remove is_consteval_only* traits Message-ID: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: elWBuKKqxt4O1F52IpvX1ArRD6PmO3CpyEMo9hYsLG4_1774849499 X-Mimecast-Originator: redhat.com Content-Disposition: inline X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SCC_10_SHORT_WORD_LINES, SCC_20_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, SPF_HELO_PASS, SPF_NONE, TXREP, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Jakub Jelinek Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org Hi! The following patch implements LWG4555. Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2026-03-30 Jakub Jelinek 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 --- 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 -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 -struct G { - T t; - using size_type = int; -}; -struct H { - G::size_type sz; -}; -struct I { - std::initializer_list::size_type sz; -}; -template -struct J : T { }; - -template -using U = J; - -template -struct K { - J j; -}; - -template -struct L { - U u; -}; - -template -struct M : J { }; - -template -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)); -static_assert (is_consteval_only_type (^^G)); -static_assert (!is_consteval_only_type (^^H)); -static_assert (!is_consteval_only_type (^^I)); -static_assert (!is_consteval_only_type (^^J)); -static_assert (is_consteval_only_type (^^J)); -static_assert (!is_consteval_only_type (^^U)); -static_assert (is_consteval_only_type (^^U)); -static_assert (!is_consteval_only_type (^^K)); -static_assert (is_consteval_only_type (^^K)); -static_assert (!is_consteval_only_type (^^L)); -static_assert (is_consteval_only_type (^^L)); -static_assert (!is_consteval_only_type (^^M)); -static_assert (is_consteval_only_type (^^M)); -static_assert (!is_consteval_only_type (^^N)); -static_assert (!is_consteval_only_type (^^N)); - -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= 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 - 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 - 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 - -namespace std -{ - typedef short test_type; - template struct is_consteval_only; -} --- 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 - -void test01() -{ - // Check for required typedefs - typedef std::is_consteval_only 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 -#include - -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(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - static_assert(test_category(true), ""); - - // Sanity check. - static_assert(test_category(false), ""); - static_assert(test_category(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 && is_reflection::value, ""); static_assert(!is_reflection_v && !is_reflection::value, ""); -static_assert(is_consteval_only_v - && is_consteval_only::value, ""); -static_assert(!is_consteval_only_v && !is_consteval_only::value, ""); #endif #if __cpp_lib_is_structural >= 202603L