diff --git a/source/declarations.tex b/source/declarations.tex index 7b856428e6..1ea8918efa 100644 --- a/source/declarations.tex +++ b/source/declarations.tex @@ -1720,9 +1720,29 @@ type of the entity named by $E$. If there is no such entity, the program is ill-formed; -\item otherwise, if $E$ is an unparenthesized \grammarterm{splice-expression}, +\item otherwise, if $E$ is an unparenthesized \grammarterm{splice-expression}: +\begin{itemize} +\item if $E$ is of the form \grammarterm{splice-specifier}, \tcode{decltype($E$)} is the type of the entity, object, or value designated by the \grammarterm{splice-specifier} of $E$; +\item otherwise, if $E$ is of the form +\tcode{template \grammarterm{splice-specialization-specifier}} +and the \grammarterm{splice-specifier} of +the \grammarterm{splice-specialization-specifier} designates +a variable template $T$, +let $S$ be the specialization of $T$ +corresponding to the template argument list of +the \grammarterm{splice-specialization-specifier}; +\tcode{decltype($E$)} is the type of $S$; +\item otherwise, if $E$ is of the form +\tcode{template \grammarterm{splice-specifier}}, +or of the form +\tcode{template \grammarterm{splice-specialization-specifier}} +whose \grammarterm{splice-specifier} designates a function template, +$E$ denotes an overload set\iref{expr.prim.splice} and the program is +ill-formed; +\item otherwise, the program is ill-formed; +\end{itemize} \item otherwise, if $E$ is an xvalue, \tcode{decltype($E$)} is \tcode{T\&\&}, where \tcode{T} is the type