Reading this question made me wonder: is there a technical reason for disallowing class templates overloads?
By overloading, I mean having several templates with the
You cannot "overload" type parameter, non-type argument and template template parameter, but you can specialize variadic template:
template struct Foo; template struct Foo {}; template struct Foo {};