如何编写一个具有多个可变参数并对其进行处理的函数(例如,如果它们属于相同类型,则将它们加起来)?
例如,代码片段可以正常工作:
auto someFunc = [](auto a, auto b) -> auto { return a + b; };
auto curry = [](auto func) -> auto
{
return [=](auto x) -> auto
{
return [=](auto y) -> auto { return x + y; };
};
};
使用currying进行调用也可以:
std::cout << (someFunc)(10, 5) << std::endl;
std::cout << curry(someFunc)(10)(18) << std::endl;
现在当somefunc()具有以下类型的签名时,该怎么做?
auto someFunc = [](auto... a, auto... b) -> auto { return ??? ; };
如果没有这种方法,可以使用C ++ 17 Fold ops完成吗?
谢谢。