类模板重载,类型名称和类型名称的向量

时间:2014-04-18 21:34:23

标签: c++

是否可以使用单个类型名称和类型名称向量来重载我的类模板?

喜欢单一姓名:

template <typename T, ... /*other typedefs same as in second one*/ >
class myClass
{
 myClass(const T & input);
 // ...
}

和类型名称的向量(可能包含一些语法错误):

template <vector<typename T>, ... >
class myClass<vector<T>, ... >
{
 myClass(vector<T> & input);
 // ...
}

我猜的类方法看起来像这样:

template<typename T, ... >
myClass<T, ... >::myClass(const T & input) {/*do something*/}


template<vector<typename T>, ... >
myClass<vector<T>, ... >::myClass(vector<T> & input) {/*do something*/}

如此简单

myClass <string> a; // Should go for first one
myClass <vector<string>> b; // Should go for second one

有没有办法如何写这个语法正确?

1 个答案:

答案 0 :(得分:2)

这个怎么样?

template <typename T, typename...>
class myClass
{
    myClass(const T& input) { /*...*/ }
    // ...
};

template <typename T, typename... R>
class myClass<vector<T>, R...>
{
    myClass(const vector<T>& input) { /*...*/ }
    // ...
};