Re: Reference to void
Frederick Gotham wrote:
Greg Herlihy:
A const reference is no misnomer:
int i;
const int& iRef = i;
What you have there is a "reference to const" -- a reference cannot be
declared as const.
The following is a "reference to const":
const int i = 3;
const int& iRefConst = i;
and differs from the original example significantly: namely iRefConst
has an immutable value whereas iRef does not.
iRef is clearly a "const reference" - and not a "reference to const"
because the object iRef refers to, i, is not const.
int i;
const int* p = &i;
Is "p" not a "pointer to const" because i is non-const? Please.
Does 2/3 equal 3/2 because 2 * 3 equals 3 * 2 ? No, because using
multiplication to demonstrate a point about division is just as
effective as using pointers to prove a point about references.
The qualifier 'const' whether it is applied to a pointer or a reference
variable means that that variable cannot be used to assign a new value
to its object. So a "const reference" is a reference variable that
cannot be assigned a new value (because "const" appeared in its
declaration). A "reference to const" is therefore a particular kind of
const reference - one whose aliased object has also been declared
const. So stated simply: a "reference to const" variable has an
immutable value while a "const reference" variable may or may not have
an immutable value.
The latest draft of the C++ Standard uses "const reference" or
"non-const reference" a combined total of nine times, and "reference to
const" just twice. So there is scant support in the C++ Standard for
the view that "const reference" is some kind of a misnomer.
Greg
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]