// PR c++/31434 // { dg-do run { target c++11 } } extern "C" void abort (); template inline int foo (const T...) { return 1; } template inline int foo (const T *...) { return 2; } void bar (int *a) { a[0] = foo (0); a[1] = foo (*a); a[2] = foo (a); a[3] = foo (2, 3, 4, 5); a[4] = foo (a, a + 1, a + 2); } int main () { int a[5]; bar (a); if (a[0] != 1 || a[1] != 1 || a[2] != 2 || a[3] != 1 || a[4] != 2) abort (); return 0; }