有时您希望函数返回多个值。在 C++ 中实现这种行为的一种非常常见的方法是通过非常量引用传递您的值并在您的函数中分配给它们:
void foo(int & a, int & b)
{
a = 1; b = 2;
}
您将使用哪个:
int a, b;
foo(a, b);
// do something with a and b
现在我有一个函子,它接受这样一个函数,并希望将设置的参数转发到另一个返回结果的函数中:
template <typename F, typename G>
struct calc;
template <
typename R, typename ... FArgs,
typename G
>
struct calc<R (FArgs...), G>
{
using f_type = R (*)(FArgs...);
using g_type = G *;
R operator()(f_type f, g_type g) const
{
// I would need to declare each type in FArgs
// dummy:
Args ... args;
// now use the multiple value returning function
g(args...);
// and pass the arguments on
return f(args...);
}
};
这种方法是否有意义,还是我应该使用基于元组的方法?这里有比基于元组的方法更聪明的方法吗?