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

Reply via email to