sdm@cs.brown.edu (Scott Meyers) (06/08/89)
I want to overload operator<< so that I can print the value of a pointer
(in hex). This is what I've tried:
ostream& operator<<(ostream& s, void *ptr)
{ return s << hex(unsigned(ptr)); }
My goal is to have this function be called for a variable of type T* iff
there is no operator<< function that takes a T* as an argument. g++ 1.35
compiles this without complaint, but cfront 1.2 says:
error: << defined both as operator <<() and ostream::operator <<()
I looked in <stream.h> to find a conflicting definition of operator<< that
takes a void* as an argument, but I failed to find one. Other experiments
I performed convince me that cfront doesn't consider void* to be an "exact
match" for a T*.
If someone could explain what is happening, I'd appreciate it.
Scott
sdm@cs.brown.edu