You cannot have separate templates with the same name, but you can have a base template and one or more specializations of this class.
template<class BaseClass> class MyClass { }; template<class T, template<typename> class BaseClass> class MyClass<BaseClass<T>> { }; template<> class MyClass<int> { };
source share