// PRMS ID: 7507 // Build don't link: /* ------------------------------------------------------------ */ class Base0 { public: Base0() {} virtual ~Base0() {} }; class Base1 { public: Base1() {} virtual ~Base1() {} }; class Derived : public Base0, public Base1 { public: Derived() {} virtual ~Derived() {} }; /* ------------------------------------------------------------ */ class Dummy { public: Dummy(Base0 * theBase) {} ~Dummy() {} }; /* ------------------------------------------------------------ */ template class ConstSmartPtr { T* myItem; // private public: ConstSmartPtr(T const* theItem); operator T const*() const { return myItem; } protected: T* _item() const { return myItem; } }; template class SmartPtr : public ConstSmartPtr { public: SmartPtr(T* theItem) : ConstSmartPtr(theItem) {} T* item() const { return _item(); } operator T*() const { return _item(); } }; /* ------------------------------------------------------------ */ void function() { SmartPtr myObj = new Derived(); Dummy th1(myObj); // Doesn't work under Cygnus Dummy th2((Base0 *) myObj); // Doesn't work either } /* ------------------------------------------------------------ */