// PR c++/41426 template struct A { template A(_T (&V)[_N]); A(); }; A g1() { float f[] = {1.1f, 2.3f}; return f; } const A &g3() { float f[] = {1.1f, 2.3f}; return f; // { dg-warning "returning reference to temporary" } } A &g4() { float f[] = {1.1f, 2.3f}; return f; // { dg-error "cannot bind non-const lvalue ref" } } struct B { B (int (&v)[10]); B(); }; B g2() { int c[10]; return c; }