template<class... Ts, class... Ps>
void Fun(Ts... ts, Ps... ps){};
Fun(1,'a',"blah", 2.13, 3.14f);
// how do we separate which part is for ts or ps params pack
有没有一种方法可以显式注释参数的哪一部分属于ts / ps可变参数?
最佳答案
不,可变参数模板包是贪婪的,您不能将它们放在一起。
您可以将包包装成元组,然后以这种方式传递。
#include <tuple>
template<class... Ts, class... Ps>
void Fun(std::tuple<Ts...> ts, std::tuple<Ps...> ps) {
// Do something with the tuples
}
int main()
{
Fun(std::make_tuple(1,'a',"blah"), std::make_tuple(2.13, 3.14f));
}
关于c++ - 如何区分/分隔模板功能的两个连续可变参数模板参数包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61931430/