[comp.lang.c++] What? A reference can have cv-qualifiers?

ngo@tammy.harvard.edu (Tom Ngo) (03/25/91)

I'm confused.  I just read in ARM 8.2.2 [References]:

    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."

I cannot imagine what the cv-qualifiers do!  In the case of a pointer,
we read ARM 8.2.1 [Pointers]:

    In a declaration T D where D has the form

        * cv-qualifer-list-opt D1

    the type of the contained identifier is "... cv-qualifer-list
    pointer to T."  The cv-qualifiers apply to the pointer and not to
    the object pointed to.

and of course that makes total sense.  But how could cv-qualifiers
apply to a reference?

    const int& i;       // reference to const int
    int &const j;       // const reference to int?

What restrictions are there on j?  We already know that j cannot be
made to refer to a different object since in ARM 8.4.3 [References] we
have 

    A variable declared to be a T& ... must be initialized .... A
    reference cannot be changed to refer to another object after
    initialization. 

I would appreciate responses by email, and I will summarize.  No doubt
I will be flooded by replies that say "No, no, you are totally
misunderstanding references!"

Thanks in advance...

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