C ++中是否可以有多种模板类型?
例如;
template<template<typename> class BaseClass>
class MyClass {};
template<class BaseClass>
class MyClass {};
使用它;
// Using the first template (template<typename> class BaseClass)
template<typename SubClass>
class MyFirstSubClass : public MyClass<MyFirstSubClass> {};
// Using the second template (class BaseClass)
class MySecondSubClass : public MyClass<MySecondSubClass> {};
答案 0 :(得分:2)
不,这是不可能的。您必须有两个不同的模板类:
template<template<typename> class BaseClass>
class MyClassA {};
template<class BaseClass>
class MyClassB {};
答案 1 :(得分:2)
您不能拥有具有相同名称的单独模板,但您可以拥有基本模板以及该类的一个或多个特化。
template<class BaseClass>
class MyClass
{ };
template<class T, template<typename> class BaseClass>
class MyClass<BaseClass<T>>
{ };
template<>
class MyClass<int>
{ };