是否可以使用单个类型名称和类型名称向量来重载我的类模板?
喜欢单一姓名:
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
有没有办法如何写这个语法正确?
答案 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) { /*...*/ }
// ...
};