// { dg-do assemble { target { ! c++11 } } } template X f (auto X (*x)[n]) { return (*x)[n/2]; } extern int i[30]; extern double d[99]; int foo (int ii) { return f (&i); } // causes abort double foo (double dd) { return f (&d); }