Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.jason/overload33.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do assemble } // PRMS ID: 7507 /* ------------------------------------------------------------ */ 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 T> class ConstSmartPtr { T* myItem; // private public: ConstSmartPtr(T const* theItem); operator T const*() const { return myItem; } protected: T* _item() const { return myItem; } }; template<class T> class SmartPtr : public ConstSmartPtr<T> { public: SmartPtr(T* theItem) : ConstSmartPtr<T>(theItem) {} T* item() const { return this->_item(); } operator T*() const { return this->_item(); } }; /* ------------------------------------------------------------ */ void function() { SmartPtr<Derived> myObj = new Derived(); Dummy th1(myObj); // Doesn't work under Cygnus Dummy th2((Base0 *) myObj); // Doesn't work either } /* ------------------------------------------------------------ */