如何声明模板模板参数

时间:2016-03-31 16:08:42

标签: c++ templates c++11

假设我有两个班级Foo1<T>Foo2<T>

然后,我想要创建一个函数bar,该函数引用std::vector<Foo1<T>>std::vector<Foo2<T>>,但总是返回std::vector<Foo1<T>>

template<class T, class Y> std::vector<Foo1<T>> bar(std::vector<Y<T>>&)

可悲的是,编译器并不喜欢<Y<T>>位。这方面的一个方法是提供两个重载,但有没有办法我可以安排上面这样做,这是正确的吗?

1 个答案:

答案 0 :(得分:17)

您需要template template parameter

template<class T, template <typename> class Y> 
std::vector<Foo1<T>> bar(std::vector<Y<T>>&) {}