http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51203
Bug #: 51203 Summary: Recursive alias templates not working Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: pubb...@gmail.com -std=c++11 gcc version 4.7.0 20111112 (experimental) (GCC) I presume this is correctly formed code: template <typename t> struct foo { template <int n> using next = typename foo<t>::next<n + 1>; }; main.cpp:4:37: error: expected ‘;’ before ‘<’ token main.cpp:4:37: error: expected unqualified-id before ‘<’ token Interestingly, changing the line to this compiles so long as next isn't used: using next = typename foo<t>::next; The error is very similar to this ill-formed code: using next<n> = int; main.cpp:4:13: error: expected ‘=’ before ‘<’ token main.cpp:4:13: error: expected type-specifier before ‘<’ token main.cpp:4:13: error: expected ‘;’ before ‘<’ token main.cpp:4:13: error: expected unqualified-id before ‘<’ token