Re: typedef
Frank Hickman wrote:
"George" <George@discussions.microsoft.com> wrote in message
news:F1CCEB66-223D-4072-876A-7A458005577F@microsoft.com...
Thanks Frank,
I think you mean const on reference type is ignored.
regards,
George
No, not really. You can qualify a reference datatype as const. What
you cannot do is qualify a typedef'd reference datatype as const.
This is somewhere between misleading and outright wrong.
This defines a reference to a const-qualified variable, not a
const-qualified reference:
const int c;
const int& r = c;
This defines a reference to a const-qualified variable, where the variable
itself was not const:
int i;
const int& r2 = i;
This is possible because const- and/or volatile- qualifiers can be
implicitly added to the target (still not the reference) when binding a
reference.
typedef const int& cInt1; // valid
This defines a type (reference to constant int). The reference type does
not carry the const qualifier.
typedef int& cInt2; // valid
cInt1 x1= 0; // valid
const cInt2 x2= 0; // invalid
This attempts to qualify the reference type as const. However, all
reference types are constant by nature (cannot be rebound). The type
referred to was fully specified in the typedef, cannot be changed now, and
is (still) not const. Such a reference cannot be bound to a temporary
expression.