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)11 T 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()19 foo ()
20 {
21   Container < Container < int > > v;
22   deref (v, 2);
23 }
24