You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The normal form of a concept-id C<A1, A2,..., An> is the normal form of the constraint-expression of C, after substituting A1, A2,..., An for C's respective template parameters in the parameter mappings in each atomic constraint. If any such substitution results in an invalid type or expression, the program is ill-formed; no diagnostic is required.
This sounds like a paradox. "after" means the substitution occurs before the normal form of the constraint-expression of C, whereas the substitution requires us to determine the template parameters in the parameter mappings in each atomic constraint, which means we should firstly determine what atomic constraints are in the normal form of the concept-id. I think [temp.constr.normal] p1.4 might be changed to
The normal form of a concept-id C<A1, A2,..., An> is the normal form of the constraint-expression of C by substitutingA1, A2,..., An for C's respective template parameters in the parameter mappings in each atomic constraint. If any such substitution results in an invalid type or expression, the program is ill-formed; no diagnostic is required.
I think the logic of normalizing an expression is that makes each operand in a logical operation is an atomic constraint. So, for any expression E, normalization of E is reasonable to recursively apply [temp.constr.normal] p1 to E so that obtains the atomic constraints, only after which can substitute the template arguments for the template parameter in the parameter mappings apply, as per the definition of parameter mapping.
The text was updated successfully, but these errors were encountered:
[temp.constr.normal] p1.4 says
This sounds like a paradox. "after" means the substitution occurs before the normal form of the constraint-expression of
C
, whereas the substitution requires us to determine the template parameters in the parameter mappings in each atomic constraint, which means we should firstly determine what atomic constraints are in the normal form of the concept-id. I think [temp.constr.normal] p1.4 might be changed toI think the logic of normalizing an expression is that makes each operand in a logical operation is an atomic constraint. So, for any expression E, normalization of
E
is reasonable to recursively apply [temp.constr.normal] p1 toE
so that obtains the atomic constraints, only after which can substitute the template arguments for the template parameter in the parameter mappings apply, as per the definition of parameter mapping.The text was updated successfully, but these errors were encountered: