|
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