Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 20 additions & 3 deletions source/expressions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand All @@ -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}
Expand Down
Loading