diff --git a/source/expressions.tex b/source/expressions.tex index 72f77d87bb..ebb6515b40 100644 --- a/source/expressions.tex +++ b/source/expressions.tex @@ -3659,7 +3659,7 @@ \end{note} \pnum -For a \grammarterm{splice-expression} of +For a \grammarterm{splice-expression} $E$ of the form \tcode{template \grammarterm{splice-specialization-specifier}}, the \grammarterm{splice-specifier} of the \grammarterm{splice-specialization-specifier} @@ -3676,8 +3676,25 @@ Otherwise, if $T$ is a variable template, let $S$ be the specialization of $T$ corresponding to the template argument list of the \grammarterm{splice-specialization-specifier}. -The expression is an lvalue referring to -the object associated with $S$ and has the same type as that of $S$. +The expression $E$ is an lvalue referring to the object or function +associated with or referenced by $S$. +If $E$ appears in the predicate of a contract assertion $C$\iref{basic.contract} +and $S$ is +\begin{itemize} +\item +a variable declared outside of $C$ +of object type \tcode{U}, or +\item +a variable declared outside of $C$ +of type ``reference to \tcode{U}'', +\end{itemize} +then the type of $E$ is \tcode{const U}, +otherwise $E$ has the same type as that of $S$. +\begin{note} +The type of a \grammarterm{splice-expression} +designating a variable template specialization of reference type +will be adjusted to a non-reference type\iref{expr.type}. +\end{note} \item Otherwise, the expression is ill-formed. \end{itemize}