C++ 如何使用模板获取向量中的数据类型?
我正在编写一个函数模板,如下所示:C++ 如何使用模板获取向量中的数据类型?,c++,templates,stl,C++,Templates,Stl,我正在编写一个函数模板,如下所示: template <class T> class MyClass() {} template <typename A, typename B> auto func(A<B>& data) { return MyClass<B>(); } vector<int> vi; auto a = func(vi); vector<string> vs; auto b
template <class T>
class MyClass() {}
template <typename A, typename B>
auto func(A<B>& data) {
return MyClass<B>();
}
vector<int> vi; auto a = func(vi);
vector<string> vs; auto b = func(vs);
list<int> li; auto c = func(li);
list<string> ls; auto d = func(ls);
模板
类MyClass(){}
模板
自动功能(A和数据){
返回MyClass();
}
因此,我可以使用如下函数:
template <class T>
class MyClass() {}
template <typename A, typename B>
auto func(A<B>& data) {
return MyClass<B>();
}
vector<int> vi; auto a = func(vi);
vector<string> vs; auto b = func(vs);
list<int> li; auto c = func(li);
list<string> ls; auto d = func(ls);
向量vi;自动a=func(vi);
向量vs;自动b=功能(vs);
李名单;自动c=func(li);
列表ls;自动d=func(ls);
但显然这是不允许的。我应该如何编写模板以达到我的目标?这应该可以:
template <class T>
class MyClass {};
template <template <typename, typename...> typename A, typename B, typename ... REST>
auto func(A<B,REST...>& data) {
return MyClass<B>();
}
模板
类MyClass{};
模板
自动功能(A和数据){
返回MyClass();
}
您可以将A
声明为,否则不能在函数参数声明中将其用作A
,因为它不被视为模板
template <template <typename...> class A, typename B>
auto func(A<B>& data) {
// ... use B as the data type ...
}