如何为输入和输出参数使用单独的参数包?

Dan*_*uli 3 c++ templates variadic-templates

我想要一个可以接受任意数量的in和out参数的函数:

template<typename... Inputs, typename... Outputs>
void foo(Inputs... inputs, Outputs*... outputs)
{
   // ...
}
Run Code Online (Sandbox Code Playgroud)

示例调用:

uint32 o1 = 0;
double o2 = 0.0;
bool o3 = false;

foo(1, 2, &o1, &o2, &o3);
Run Code Online (Sandbox Code Playgroud)

但是,这不会编译,因为编译器会尝试将所有参数匹配到第二个参数包中。我希望它可以*用作指示将两个包装分开的地方。

任何提示如何解决?

Yak*_*ont 6

auto foo = []( auto... Inputs ){
  return [=](auto*... Outputs){
    return 7;
  };
};
Run Code Online (Sandbox Code Playgroud)

现在,foo(3,4,5)(&a,&b,&c)您要做什么。