Можно ли развернуть картеж, чтоб передать его в качестве аргумента в функцию, где требуется несколько аргументов?

Вот пример, у нас есть кортеж

auto t = std::make_tuple(1, 2, 3);

есть функция

int calc(int a, int b, int c);

Могу ли я как то развернуть кортеж, чтоб передать его вместо 3 аргументов в функцию?


Ответы (1 шт):

Автор решения: user7860670

Для этого в стандартной библиотеке есть вспомогательная функция apply:

#include <tuple>

int calc(int a, int b, int c)
{
    return a + b + c;
}

int main()
{
    return ::std::apply(::calc, ::std::make_tuple(1, 2, 3));
}

online compiler

→ Ссылка