This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Immediate status.

4555. Remove is_consteval_only

Section: 21.3.6.4 [meta.unary.prop], 21.4.17 [meta.reflection.traits] Status: Immediate Submitter: Tim Song Opened: 2026-03-24 Last modified: 2026-03-26

Priority: Not Prioritized

View other active issues in [meta.unary.prop].

View all other issues in [meta.unary.prop].

View all issues with Immediate status.

Discussion:

Addresses US 81-149.

In light of recent EWG polls related to consteval-only types, it would be improvident to ship this trait in C++26. This also resolves the NB comment requesting respecification of its precondition.

[Croydon 2026-03-26; move to Immediate.]

Proposed resolution:

This wording is relative to N5032.

  1. Modify 21.3.3 [meta.type.synop], header <type_traits> synopsis, as indicated:

    […]
      // 21.3.6.4 [meta.unary.prop], type properties
    […]
      template<class T> struct is_consteval_only;
    […]
      // 21.3.6.4 [meta.unary.prop], type properties
    […]
      template<class T>
        constexpr bool is_consteval_only_v = is_consteval_only<T>::value;
    […]
    
  2. Modify [tab:meta.unary.prop], Table 54 — Type property predicates as indicated:

    TemplateConditionPreconditions
    template<class T>
    struct is_consteval_only;
    T is consteval-only (6.9.1 [basic.types.general]) remove_all_extents_t<T> shall be a complete type or cv void.
  3. Modify 21.4.1 [meta.syn], header <meta> synopsis, as indicated:

    […]
      // associated with 21.3.6.4 [meta.unary.prop], type properties
    […]
      consteval bool is_consteval_only_type(info type);
    […]
    
  4. Modify 21.4.17 [meta.reflection.traits] as indicated:

    […]
      // associated with 21.3.6.4 [meta.unary.prop], type properties
    […]
      consteval bool is_consteval_only_type(info type);
    […]
    

    -3- […]