summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.ns/template9.C
blob: 3914746d71e5dbbc9d96f8678bfaa47c66093aaf (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
38
39
40
41
// { dg-do run  }
// Produces ICE 980519.
// Test case from Dirk Engelmann <Dirk.Engelmann@IWR.Uni-Heidelberg.De>

namespace vector {

  // allocate memory for vector
        
        template <class T>
        inline T* alloc(const int aWidth)
        {
                // allocate memory
                return new T[aWidth];
        }

}

namespace matrix {

  // allocate memory for matrix
        template <class T>
        T** alloc(const int aWidth,const int aHeight)
        {
                // allocate memory
                T **mat = vector::alloc<T*>(aHeight);
                T *data = vector::alloc<T> (aWidth*aHeight);
                // set pointer
                for (int i=0; i<aHeight; i++)
                        mat[i] = &data[aWidth*i];
                // ok
                return mat;
        }

}

int main(void)
{
  // sample
  double **m=matrix::alloc<double>(10,20);

}