首页 > 解决方案 > C++ 元编程来拆分函数参数并将它们一个接一个地传递给另一个函数

问题描述

所以我有一个具有不同参数类型的可变参数函数;我想将每个参数传递给另一个函数,它是一个 C 函数。举个例子; 对于有两个论点的案例;

void function(int *a, double *b) needs to call
{
  bindToFunc(0, a);
  bindToFunc(1, b);
}

void function(int *a, double *b, float *c) needs to call
{
  bindToFunc(0, a);
  bindToFunc(1, b);
  bindToFunc(2, c);
}

template<typename... T>
void function(T ...)
{
  // has to have
  // 
  // bindToFunc(0, T0) ....
  // bindToFunc(n-1, Tn-1);
}

我尝试使用,

template <int I, class... Ts> 
decltype(auto) get(Ts &&... ts) 
{
  return std::get<I>(std::forward_as_tuple(ts...));
}

但由于 I 是模板参数,它是一个编译时变量,因此我们不能在 for 循环中使用它。

标签: c++c++17

解决方案



推荐阅读