Возможный дубликат:
Как расширить кортеж в вариативные аргументы шаблонной функции?
«распаковка» кортежа для вызова соответствующего указателя на функциюЕсть ли в шаблонах C++11 способ использовать кортеж в качестве отдельных аргументов функции (возможно, шаблона)?
Пример:
Допустим, у меня есть эта функция:void foo(int a, int b) { }
И у меня есть кортеж
auto bar = std::make_tuple(1, 2)
.Могу ли я использовать это для вызова
foo(1, 2)
по шаблону?Я не имею в виду просто
foo(std::get(bar), std::get(bar))
, так как я хочу сделать это в шаблоне, который не не знаю количество аргументов.Более полный пример:
template
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 } Должен отметить, что я бы предпочел не создавать один шаблон, который работает для одного аргумента, другой, который работает для двух и т. д.…