1/* { dg-do run } */
2
3template <unsigned R, unsigned C>
4class M {
5public:
6    M(const int* arr) {
7	for (unsigned long r = 0; r < R; ++r)
8	  for (unsigned long c = 0; c < C; ++c)
9	    m[r*C+c] = arr[r*C+c];
10    }
11    int operator()(unsigned r, unsigned c) const
12      { return m[r*C+c]; }
13private:
14    int m[R*C];
15};
16extern "C" void abort (void);
17int main()
18{
19  int vals[2][2] = { { 1, 2 }, { 5, 6 } };
20  M<2,2> m( &(vals[0][0]) );
21  if (m(1,0) != 5)
22    abort ();
23  return 0;
24}
25
26