多种模板类型

时间:2015-08-16 19:18:20

标签: c++ templates

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> {};

2 个答案:

答案 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>
{ };