This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 119d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2026-03-27
(From submission #696.)
(Split off from issue 3069.)
Subclause 13.5.4 [temp.constr.normal] bullet 1.4.2 specifies:
... The normal form of CI is the result of substituting, in the normal form N of CE, appearances of C's template parameters in the parameter mappings of the atomic constraints in N with their respective arguments from C. ...
However, C is a concept-name and does not have any template parameters. CI, the concept-id, does, however.
Proposed resolution (approved by CWG 2026-03-27):
Change in 13.5.4 [temp.constr.normal] paragraph 1.4.2:
For a concept-id C<A1 , A2 , . . . , An > termed CI:
- If C names a dependent concept, the normal form of CI is a concept-dependent constraint whose concept-id is CI and whose parameter mapping is the identity mapping.
- Otherwise, to form CE, any non-dependent concept template argument Ai is substituted into the constraint-expression of C. If any such substitution results in an invalid concept-id, the program is ill-formed; no diagnostic is required. The normal form of CI is the result of substituting, in the normal form N of CE, appearances of C's template parameters in the parameter mappings of the atomic constraints in N with their respective arguments from
CCI. If any such substitution results in an invalid type or expression, the program is ill-formed; no diagnostic is required.