CWG Issue 2428 (original) (raw)

This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2025-04-13


2428. Deprecating a concept

Section: 13.7.9 [temp.concept]Status: C++23Submitter: Eric NieblerDate: 2018-12-10

[Accepted as a DR at the November, 2022 meeting.]

The grammar for a concept-definition does not include an_attribute-specifier-seqopt_, making it impossible to deprecate a concept. This seems like an oversight.

CWG telecon 2022-10-07:

Agreed.

Proposed resolution (approved by CWG 2022-10-21):

  1. Change in 9.13.4 [dcl.attr.deprecated] paragraph 2 as follows:

    The attribute may be applied to the declaration of a class, a typedef-name, a variable, a non-static data member, a function, a namespace, an enumeration, an enumerator,a concept, or a template specialization.

  2. Change in 13.7.9 [temp.concept] paragraph 1 as follows:

    A concept is a template that defines constraints on its template arguments.

    concept-definition:
    concept concept-name _attribute-specifier-seq_opt = constraint-expression ;

    concept-name:
    identifier

    A concept-definition declares a concept. Its _identifier_becomes a concept-name referring to that concept within its scope. The optional attribute-specifier-seq appertains to the concept.