Passing type template as template template parameter within its own definition


I recently came across some template code, which essentially boils
down to something like this:

template <template <typename> class T>
struct TakeIt
    typedef T<long> Type;

template <typename T>
struct Test
    typedef TakeIt<Test>::Type Fails;

typedef TakeIt<Test>::Type Works;

The last typedef works fine passing Test as a template template parameter to
annother template TakeIt. However, doing the same within the definiton of
Test fails to compile with clang 3.2:

PassSelf.cpp:10:20: error: template argument for template template parameter must be a class
    typedef TakeIt<Test>::Type Fails;

I do understand that within the definiton of a type template its name may
be used to refer to its own instantiation and the corresponding long version

typedef TakeIt< Test<T> >::Type Fails;

is wrong. So it's at least ambiguous. On the other hand, it compiles fine with GCC
(both compilers in C++98 mode). So who is right? Or am I just missing some
fancy template syntax, I don't know yet.

Thanks & ciao,