首页 > 解决方案 > 接受多个可变参数的函数: sumfunc(auto... a, auto... b)

问题描述

如何编写这样一个函数,它接受多个可变参数并用它们做一些事情(例如,如果它们是相同的类型,则总结它们)?

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

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; };
    };
};

用柯里化调用它也有效:

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 折叠操作来完成吗?

谢谢。

标签: c++c++17

解决方案


推荐阅读