|
1581 | 1581 | \grammarterm{decltype-specifier} \tcode{::} \tcode{\~} \grammarterm{type-name}.
|
1582 | 1582 |
|
1583 | 1583 | \pnum
|
1584 |
| -The result of a \grammarterm{qualified-id} is |
| 1584 | +The result of a \grammarterm{qualified-id} $Q$ is |
1585 | 1585 | the entity it denotes\iref{basic.lookup.qual}.
|
1586 | 1586 | The type of the expression is the type of the result.
|
1587 | 1587 | The result is an lvalue if the member is
|
1588 |
| -a function, |
| 1588 | +\begin{itemize} |
| 1589 | +\item |
| 1590 | +a function other than a non-static member function, |
| 1591 | +\item |
| 1592 | +a non-static member function |
| 1593 | +if $Q$ is the operand of a unary \tcode{\&} operator, |
| 1594 | +\item |
1589 | 1595 | a variable,
|
1590 |
| -a structured binding\iref{dcl.struct.bind}, |
1591 |
| -a static member function, or |
| 1596 | +\item |
| 1597 | +a structured binding\iref{dcl.struct.bind}, or |
| 1598 | +\item |
1592 | 1599 | a data member,
|
| 1600 | +\end{itemize} |
1593 | 1601 | and a prvalue otherwise.
|
1594 | 1602 |
|
1595 | 1603 | \rSec3[expr.prim.id.dtor]{Destruction}
|
|
4313 | 4321 | \pnum
|
4314 | 4322 | \indextext{name!address of cv-qualified}%
|
4315 | 4323 | \indextext{expression!pointer-to-member constant}%
|
4316 |
| -The result of the unary \tcode{\&} operator is a pointer to its operand. |
| 4324 | +The operand of the unary \tcode{\&} operator |
| 4325 | +shall be an lvalue of some type \tcode{T}. |
| 4326 | +The result is a prvalue. |
4317 | 4327 | \begin{itemize}
|
4318 | 4328 | \item
|
4319 | 4329 | If the operand is a \grammarterm{qualified-id} naming a non-static or variant member \tcode{m}
|
4320 |
| -of some class \tcode{C} with type \tcode{T}, the result has type ``pointer to member |
4321 |
| -of class \tcode{C} of type \tcode{T}'' and is a prvalue designating \tcode{C::m}. |
| 4330 | +of some class \tcode{C}, the result has type ``pointer to member |
| 4331 | +of class \tcode{C} of type \tcode{T}'' and designates \tcode{C::m}. |
4322 | 4332 | \item
|
4323 |
| -Otherwise, if the operand is an lvalue of type \tcode{T}, |
4324 |
| -the resulting expression is a prvalue of type ``pointer to \tcode{T}'' |
4325 |
| -whose result is a pointer to the designated object\iref{intro.memory} or function. |
| 4333 | +Otherwise, the result has type ``pointer to \tcode{T}'' and points to |
| 4334 | +the designated object\iref{intro.memory} or function\iref{basic.compound}. |
4326 | 4335 | \begin{note}
|
4327 | 4336 | In particular, taking the address of a variable of type ``\cv{}~\tcode{T}''
|
4328 | 4337 | yields a pointer of type ``pointer to \cv{}~\tcode{T}''.
|
4329 | 4338 | \end{note}
|
4330 |
| -\item |
4331 |
| -Otherwise, the program is ill-formed. |
4332 | 4339 | \end{itemize}
|
4333 | 4340 | \begin{example}
|
4334 | 4341 | \begin{codeblock}
|
|
0 commit comments