假设我有一个双端队列和一个向量:
deque<someclass> d;
vector<similar_class> v;
现在,我有两个不同的容器和两个不同但相似的元素类。
我有一个函数执行对以下任何类型都有用的操作:
deque<similar_class> a;
deque<someclass> b;
vector<similar_class> c;
vector<someclass> d;
如何编码&#39; collection_type&#39;在模板中?
例如:
// starting with this function (which is fine)
template<class element>
element * my_func(deque<element> & collection)
{ ... }
// Now, how do I abstract this for a generic collection?
template<class collection, class element>
element * my_func(collection<element> & c)
{ ... }
???
答案 0 :(得分:7)
template<class collection, class element>
element* my_func(collection<element> & c)
应该是:
template <template <typename ...> class collection, class element>
element* my_func(collection<element>& c)
您还有其他可能的选择:
template <class C>
typename C::pointer // or also auto or decltype(auto)
my_func(C& c)