Функция, которая принимает несколько переменных-аргументов: sumfunc (auto ... a, auto ... b) - PullRequest
0 голосов
/ 02 сентября 2018

Как написать такую ​​функцию, которая принимает несколько переменных аргументов и что-то с ними делает (например, суммирует их, если они одного типа)?

Например, фрагмент кода работает нормально:

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 Fold ops?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...