|
4243 | 4243 | otherwise \tcode{E1.E2} designates the object or function to which
|
4244 | 4244 | the corresponding reference member of \tcode{E1} is bound.
|
4245 | 4245 | Otherwise, one of the following rules applies.
|
4246 |
| - |
4247 | 4246 | \begin{itemize}
|
4248 |
| -\item If \tcode{E2} designates a static data member and the type of \tcode{E2} |
| 4247 | +\item |
| 4248 | +If \tcode{E2} designates a static data member and the type of \tcode{E2} |
4249 | 4249 | is \tcode{T}, then \tcode{E1.E2} is an lvalue; the expression designates
|
4250 | 4250 | the named member of the class. The type of \tcode{E1.E2} is \tcode{T}.
|
4251 | 4251 |
|
4252 |
| -\item Otherwise, if \tcode{E2} designates a non-static data member and the type of |
| 4252 | +\item |
| 4253 | +Otherwise, if \tcode{E2} designates a non-static data member and the type of |
4253 | 4254 | \tcode{E1} is ``\cvqual{cq1 vq1} \tcode{X}'', and the type of \tcode{E2}
|
4254 | 4255 | is ``\cvqual{cq2 vq2} \tcode{T}'', the expression designates the corresponding
|
4255 | 4256 | member subobject of the object designated by \tcode{E1}. If \tcode{E1}
|
|
4268 | 4269 | is not declared to be a \keyword{mutable} member,
|
4269 | 4270 | then the type of \tcode{E1.E2} is ``\cvqual{cq12} \cvqual{vq12} \tcode{T}''.
|
4270 | 4271 |
|
4271 |
| -\item If \tcode{E2} denotes an overload set, |
| 4272 | +\item |
| 4273 | +Otherwise, if \tcode{E2} denotes an overload set, |
4272 | 4274 | the expression shall be the (possibly-parenthesized) left-hand operand of
|
4273 | 4275 | a member function call\iref{expr.call}, and
|
4274 | 4276 | function overload resolution\iref{over.match}
|
4275 | 4277 | is used to select the function to which \tcode{E2} refers.
|
4276 | 4278 | The type of \tcode{E1.E2} is the type of \tcode{E2}
|
4277 | 4279 | and \tcode{E1.E2} refers to the function referred to by \tcode{E2}.
|
4278 |
| - |
4279 | 4280 | \begin{itemize}
|
4280 |
| -\item If \tcode{E2} refers to a static member function, |
| 4281 | +\item |
| 4282 | +If \tcode{E2} refers to a static member function, |
4281 | 4283 | \tcode{E1.E2} is an lvalue.
|
4282 |
| - |
4283 |
| -\item Otherwise (when \tcode{E2} refers to a non-static member function), |
| 4284 | +\item |
| 4285 | +Otherwise (when \tcode{E2} refers to a non-static member function), |
4284 | 4286 | \tcode{E1.E2} is a prvalue.
|
4285 | 4287 | \begin{note}
|
4286 | 4288 | Any redundant set of parentheses surrounding the expression
|
4287 | 4289 | is ignored\iref{expr.prim.paren}.
|
4288 | 4290 | \end{note}
|
4289 | 4291 | \end{itemize}
|
4290 | 4292 |
|
4291 |
| -\item If \tcode{E2} designates a nested type, the expression \tcode{E1.E2} is |
4292 |
| -ill-formed. |
| 4293 | +\item |
| 4294 | +Otherwise, if \tcode{E2} designates a nested type, |
| 4295 | +the expression \tcode{E1.E2} is ill-formed. |
4293 | 4296 |
|
4294 |
| -\item If \tcode{E2} designates a member enumerator and the type of \tcode{E2} |
| 4297 | +\item |
| 4298 | +Otherwise, if \tcode{E2} designates a member enumerator and the type of \tcode{E2} |
4295 | 4299 | is \tcode{T}, the expression \tcode{E1.E2} is a prvalue of type \tcode{T}
|
4296 | 4300 | whose value is the value of the enumerator.
|
4297 | 4301 |
|
4298 |
| -\item If \tcode{E2} designates a direct base class relationship $(D, B)$ |
| 4302 | +\item |
| 4303 | +Otherwise, if \tcode{E2} designates a direct base class relationship $(D, B)$ |
4299 | 4304 | and the type of \tcode{E1} is \cv{} \tcode{T},
|
4300 | 4305 | the expression designates the direct base class subobject of type $B$
|
4301 | 4306 | of the object designated by \tcode{E1}.
|
|
4329 | 4334 | \end{codeblock}
|
4330 | 4335 | \end{example}
|
4331 | 4336 |
|
4332 |
| -\item Otherwise, the program is ill-formed. |
| 4337 | +\item |
| 4338 | +Otherwise, the program is ill-formed. |
4333 | 4339 | \end{itemize}
|
4334 | 4340 |
|
4335 | 4341 | \pnum
|
|
0 commit comments