summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.pt/crash49.C
blob: a3e3effdf960d4f9e7519772a4571e82b5ae5475 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// { 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;
}