Skip to content
Open
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
22 changes: 18 additions & 4 deletions source/expressions.tex
Original file line number Diff line number Diff line change
Expand Up @@ -3560,7 +3560,7 @@
\end{example}

\pnum
For a \grammarterm{splice-expression} of the form \grammarterm{splice-specifier},
For a \grammarterm{splice-expression} $E$ of the form \grammarterm{splice-specifier},
let $S$ be the construct designated by \grammarterm{splice-specifier}.
\begin{itemize}
\item
Expand Down Expand Up @@ -3610,10 +3610,24 @@
Otherwise, if $S$ is a variable or a structured binding,
$S$ shall either have static or thread storage duration or
shall inhabit a scope enclosing the expression.
The expression is an lvalue referring to the object or function $X$
associated with or referenced by $S$,
has the same type as that of $S$, and
$E$ is an lvalue referring to the object or function $X$
associated with or referenced by $S$, and
is a bit-field if and only if $X$ is a bit-field.
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{T},
\item
a variable declared outside of $C$
of type ``reference to \tcode{T}'', or
\item
a structured binding of type \tcode{T}
whose corresponding variable is declared outside of $C$,
\end{itemize}
then the type of $E$ is \tcode{const T},
otherwise $E$ has the same type as that of $S$.
\begin{note}
The type of a \grammarterm{splice-expression}
designating a variable or structured binding of reference type
Expand Down
Loading