c++ - 如何区分/分隔模板功能的两个连续可变参数模板参数包?

标签 c++ templates variadic

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/

相关文章:

c++ - 为什么大型本地数组会使我的程序崩溃,而全局数组却不会?

c++ - 为什么模板只能在头文件中实现?

c# - unity3d import c++ dll for pass by reference 方法

c++ - 如何在 std::vector 中存储对象而不复制或 move 构造函数?

c++ - std::function 以函数作为默认参数

templates - 我在哪里可以获得 MediaWiki 的模板?

c++ - 带 std::index_sequence 的三元运算符

c++ - 限制可变参数函数模板仅接受一个可变参数类模板的嵌套可变参数类模板的变体?

c++ - 获取包包

c++ - 枚举可变模板参数包