Re: Reference to void
Lucian Radu Teodorescu wrote:
Is the following code valid?
int i = 5;
void* pv = &i;
void& rv = *pv; // Error here on VC 2005
If not, why isn't it valid?
Its not valid for the same reasons that the following is invalid:
void v = 5;
That is to say: a reference is an object and a valid object.
The same can't be said of a pointer, or any pointer.
Let's make the following assumption: every type is implicitly derived
from void. Many C++ programmers can accept that.
Name one. It's manifestly false; it is, in fact, illegal to
derive from void (or from any incomplete type).
Void, as a type, is an incomplete type, which can never be
completed. And in no case can you derive from an incomplete
type. The rules concerning convertion of T* to void* do NOT
obey the rules of derived to base (which only works if the types
are complete), and of course, work even in cases where
inheritance would be illegal, e.g. int* to void*.
James Kanze (GABI Software) email:email@example.com
Conseils en informatique orient?e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S?mard, 78210 St.-Cyr-l'?cole, France, +33 (0)1 30 23 00 34
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]