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

### 3556. Specification of when semantic constraints are imposed by use of concepts is unclear

Section: 16.3.2.3 [structure.requirements] Status: New Submitter: Tim Song Opened: 2021-05-23 Last modified: 2021-05-26

Priority: 3

View all other issues in [structure.requirements].

View all issues with New status.

Discussion:

16.3.2.3 [structure.requirements] p9 says:

> A declaration may explicitly impose requirements through its associated constraints (13.5.3 [temp.constr.decl]). When the associated constraints refer to a concept (13.7.9 [temp.concept]), the semantic constraints specified for that concept are additionally imposed on the use of the declaration.

There are at least two issues with this wording:

1. First, "associated constraints" is a Core term that refers to the constraints on a declaration after normalization, at which point direct uses of concepts have been decomposed into the constituent atomic constraints and are no longer visible.

2. Second, "refers to" is too vague. Does `!C<T>` "refer to" `C` and impose its semantic constraints? Does `C1<T> || C2<T>` "refer to" both `C1` and `C2` and therefore impose the semantic constraints of both?

[2021-05-26; Reflector poll]

Set priority to 3 after reflector poll.

Proposed resolution: