需要多个可变参数的函数:sumfunc(auto ... a,auto ... b)

时间:2018-09-02 16:10:26

标签: c++ c++17

如何编写一个具有多个可变参数并对其进行处理的函数(例如,如果它们属于相同类型,则将它们加起来)?

例如,代码片段可以正常工作:

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完成吗?

谢谢。

0 个答案:

没有答案