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