// PR c++/54318 // { dg-do compile { target c++11 } } template struct wrapped { typedef T type; }; template typename T::type unwrap1(T); int unwrap(int); template auto unwrap(T t) -> decltype(unwrap(unwrap1(t))) { return unwrap(unwrap1(t)); } int main() { unwrap(wrapped>()); }