1 // { dg-do assemble } 2 // Origin: Loring Holden <lsh@cs.brown.edu> 3 4 template <class T> 5 class REFptr { 6 public: 7 REFptr(); 8 REFptr(T *pObj); 9 virtual ~REFptr(); 10 operator T* () const; 11 }; 12 13 class GEL; 14 class GELsubc { 15 public : 16 virtual GEL *GELcast() const; 17 }; 18 class GELptr : public REFptr<GEL>{ 19 public : 20 GELptr(const GELptr &p); 21 GELptr(const GELsubc &p); 22 }; 23 class GEL { }; 24 25 class GEOM; 26 class GEOMptr : public REFptr<GEOM>, public GELsubc { 27 public: GEOMptr()28 GEOMptr() { } 29 GEOMptr(GEOM *g); 30 }; 31 class GEOM : public GEL { 32 public: 33 GEOM(const GEOMptr &o); 34 GEOM(); 35 }; 36 37 class TEXT2D; 38 class TEXT2Dptr : public REFptr<TEXT2D> { 39 public: 40 TEXT2Dptr(); 41 TEXT2Dptr(TEXT2D *g); 42 }; 43 class TEXT2D : public GEOM { }; 44 45 void testit(const GELptr g); 46 47 void FPS()48FPS() 49 { 50 TEXT2Dptr fps_text; 51 testit(GEOMptr(&*fps_text)); 52 } 53