1// { dg-do assemble  }
2
3class OBJECT {int a;};
4class STDFILE {int b;};
5
6template <class T> class VECTOR {
7    T *v;
8    int sz;
9public:
10    T& elem(int i) { return v[i]; }
11    T& operator[] (int i);
12};
13
14template <class T>
15class PVECTOR : VECTOR<void *> {
16public:
17    T*& elem(int i)
18        {return (T*&) VECTOR<void *>::elem(i); }
19    T*& operator[] (int i)
20        {return (T*&) VECTOR<void *>::operator[](i);}
21};
22
23PVECTOR<OBJECT *> *foo;
24
25PVECTOR<STDFILE *> *goo;
26