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()48 FPS()
49 {
50   TEXT2Dptr fps_text;
51   testit(GEOMptr(&*fps_text));
52 }
53