diff --git a/source/expressions.tex b/source/expressions.tex index dd24afa83e..61d5fd4b0e 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -2694,8 +2694,6 @@ \pnum A \grammarterm{requires-expression} is a prvalue of type \tcode{bool} whose value is described below. -Expressions appearing within a \grammarterm{requirement-body} -are unevaluated operands\iref{term.unevaluated.operand}. \pnum \begin{example} @@ -2779,6 +2777,7 @@ \pnum A \grammarterm{simple-requirement} asserts the validity of an \grammarterm{expression}. +The \grammarterm{expression} is an unevaluated operand\iref{expr.context}. \begin{note} The enclosing \grammarterm{requires-expression} will evaluate to \keyword{false} if substitution of template arguments into the \grammarterm{expression} fails. @@ -2848,7 +2847,9 @@ \pnum A \grammarterm{compound-requirement} asserts properties -of the \grammarterm{expression} $E$. Substitution +of the \grammarterm{expression} $E$. +The \grammarterm{expression} is an unevaluated operand\iref{expr.context}. +Substitution of template arguments (if any) and verification of semantic properties proceed in the following order: @@ -2957,8 +2958,9 @@ \end{example} \pnum -A local parameter shall only appear as an unevaluated operand\iref{term.unevaluated.operand} -within the \grammarterm{constraint-expression}. +Within the \grammarterm{constraint-expression}, +an \grammarterm{unqualified-id} naming a local parameter shall not be +potentially evaluated\iref{basic.def.odr}. \begin{example} \begin{codeblock} template concept C = requires (T a) {