提问者:小点点

带有两个参数的C++参数包递归


我有一个模板类,它使用两种类型:

template<typename T1,typename T2> class Foo { ... };

我需要编写一个函数,它接受任意数量的foo变量:

template <typename T1, typename T2, typename... Others> size_t getSize(Foo<T1,T2> *f, Foo<Others>*... o) { ... };

如果我只使用一个模板参数实现类foo,那么它工作得很好。 但是如果有两个(或更多)参数,编译器会抱怨foo需要两个参数。

类foo具有多个模板参数时,是否可能实现参数包转发?


共2个答案

匿名用户

怎么样

template <typename ... Ts1, typename ... Ts2>
std::size_t get_size (Foo<Ts1, Ts2> * ... fs)
 { /* ... */ }

或者,也许,

template <typename T1, typename T2, typename ... Us1, typename ... Us2>
std::size_t get_size (Foo<T1, T2> * f, Foo<Us1, Us2> * ... fs)
 { /* ... */ }

如果您希望第一个foo以不同方式进行管理。