(Yes, the title is so weird thanks to my poor English; I hope someone can improve it.)
Answering this question, I found that this code works:
template <typename T1, typename T2> class A { };
template <template <typename...> class U> class B { };
int main()
{
B<A> it_works;
}
..although template <typename...> class
and template <typename, typename> class
aren't equal.
I tried to figure out why it is possible and watch [temp.param] of N3337 standard, but I can't find anything. How is it possible?