1 // PR c++/52043 2 // { dg-do compile { target c++11 } } 3 // { dg-options "-Wreturn-type" } 4 5 template < class T > struct Container 6 { 7 T f (); 8 }; 9 10 template < class T > deref(T)11T deref (T) 12 {} // { dg-bogus "no return" } 13 14 template < class T, class ... Args > 15 auto deref (T u, int, Args ... args)->decltype (deref (u.f (), args ...)) 16 {} // { dg-warning "no return" } 17 18 void foo()19foo () 20 { 21 Container < Container < int > > v; 22 deref (v, 2); 23 } 24