[gnu.g++] Are conversions inheritable?

gjditchfield@watmsg.waterloo.edu (Glen Ditchfield) (07/30/88)

Are conversion operators supposed to be inherited in the same way as other
member functions?

Here is an example:
----------------------------------------
class base {
    void* p;
  public:
    base(void* p) { base::p = p; };
    void* asVoid() { return p; };
    operator void*() { return p; };
    };

class derv:public base {
  public:
    derv(void* p):(p) {};
    };

main() {
    base b(0);
    derv d(0);
    b.asVoid();
    d.asVoid();
    (void*)b;
    (void*)d;
    }
----------------------------------------
AT&T C++ (v 1.2.1) gives the error message
 ... line 20: error: cannot cast class object to pointer
so operator void*() was not inherited, although asVoid() was.  On the other
hand, G++ 1.21 makes no complaints about this code.  Which of the two
compilers is doing the right thing?

(If we get to vote, I vote for making converstion operators inheritable.)

       Glen Ditchfield  gjditchfield@violet.uwaterloo.ca  Office: DC 2517
Dept. of Computer Science, U of Waterloo, Waterloo, Ontario, Canada, N2L 3G1
	   Each age thinks itself in possession of the true and
	    only view possible for sensible man -- W. M. Dixon

--
Glen Ditchfield                      {watmath,utzoo,ihnp4}!watrose!gjditchfield
Dept of Computer Science, U of Waterloo         (519) 885-1211 x6658
Waterloo, Ontario, Canada			   Office: MC 2006
If you grab the bull by the horns, you at least confuse him -- R.A.Heinlein