Возможный дубликат:
Как расширить кортеж в аргументы функции вариационной матрицы?
"распаковать" кортеж, чтобы вызвать соответствующий указатель функции
В шаблонах С++ 11 существует ли способ использовать кортеж в качестве отдельных аргументов функции (возможно, шаблона)?
Пример:
Скажем, у меня есть эта функция:
void foo(int a, int b)
{
}
И у меня есть кортеж auto bar = std::make_tuple(1, 2)
.
Могу ли я использовать это для вызова foo(1, 2)
темплатным способом?
Я не имею в виду просто foo(std::get<0>(bar), std::get<1>(bar))
, поскольку я хочу сделать это в шаблоне, который не знает числа аргументов.
Более полный пример:
template<typename Func, typename... Args>
void caller(Func func, Args... args)
{
auto argtuple = std::make_tuple(args...);
do_stuff_with_tuple(argtuple);
func(insert_magic_here(argtuple)); // <-- this is the hard part
}
Я должен отметить, что я бы предпочел не создавать один шаблон, который работает для одного arg, другой, который работает для двоих и т.д.