C ++ 11: я могу перейти от нескольких аргументов к кортежу, но могу ли я перейти от кортежа к нескольким аргументам? [Дубликат]

Possible Duplicate:
How do I expand a tuple into variadic template function's arguments?
“unpacking” a tuple to call a matching function pointer

В шаблонах C ++ 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)) поскольку я хочу сделать это в шаблоне, который не знает количество аргументов.

More complete example:

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  
}

Следует отметить, что я предпочитаю не создавать один шаблон, который работает для одного аргумента, другой - для двух и т. Д. & # X2026;

Ответы на вопрос(2)

Ваш ответ на вопрос