// { dg-do assemble } // Origin: Loring Holden <lsh@cs.brown.edu> template <class T> class REFptr { public: virtual ~REFptr(); REFptr<T> &operator = (const REFptr<T>& p); }; class STR { }; class str_ptr : public REFptr<STR> { }; template <class T> class ARRAY { protected: T *_array; int _num; int _max; public: virtual void realloc(int new_max) { _max = new_max; T *tmp = new T [_max]; if (tmp == 0) return; for (int i=0; i<_num; i++) { tmp[i] = _array[i]; } delete [] _array; _array = tmp; } }; int main() { ARRAY<str_ptr> tags; }