Topic: What is "int &const r"?


Author: ngo@tammy.harvard.edu (Tom Ngo)
Date: 16 Apr 91 03:37:43 GMT
Raw View
Here's an interesting C++ statement.  What does it mean?

    int &const r;

Hopefully your answer is that it is illegal and/or meaningless.  If
so, look in ARM 8.2.2 [References], which states:

    In a declaration T D where D has the form

        & cv-qualifier-list-opt D1

    the type of the contained identifier is "... cv-qualifier-list
    reference to T."

And, of course, a cv-qualifier can be const or volatile.

What is a const reference??!?  Is this an error in the ARM, or have I
totally misunderstood references?

--
  Tom Ngo
  ngo@harvard.harvard.edu
  617/495-1768 lab number, leave message




Author: fuchs@t500e0.telematik.informatik.uni-karlsruhe.de (Harald Fuchs)
Date: 16 Apr 91 16:06:02 GMT
Raw View
ngo@tammy.harvard.edu (Tom Ngo) writes:

>Here's an interesting C++ statement.  What does it mean?

>    int &const r;

>Hopefully your answer is that it is illegal and/or meaningless.  If
>so, look in ARM 8.2.2 [References], which states:

>    In a declaration T D where D has the form

>        & cv-qualifier-list-opt D1

>    the type of the contained identifier is "... cv-qualifier-list
>    reference to T."

>And, of course, a cv-qualifier can be const or volatile.

>What is a const reference??!?  Is this an error in the ARM, or have I
>totally misunderstood references?

"No" to both questions. A reference is always constant, so "int&const r"
is just a more verbose alternative to "int& r". Why bother with explicitly
disallowing redundancies?
See the original Stroustrup bible for details.
--

Harald Fuchs <fuchs@t500e0.telematik.informatik.uni-karlsruhe.de>