C ++ 11: Eu posso ir de múltiplos args para tuple, mas eu posso ir de tuple para múltiplos args? [duplicado]
Duplicata Possível:
Como faço para expandir uma tupla nos argumentos da função de modelo variadico?
“Desempacotando” uma tupla para chamar um ponteiro de função correspondente
Em modelos C ++ 11, existe uma maneira de usar uma tupla como os argumentos individuais de uma função (possivelmente modelo)?
Exemplo:
Vamos dizer que eu tenho essa função:
void foo(int a, int b)
{
}
E eu tenho a tuplaauto bar = std::make_tuple(1, 2)
.
Posso usar isso para ligarfoo(1, 2)
de uma maneira templaty?
Não me refiro simplesmentefoo(std::get<0>(bar), std::get<1>(bar))
desde que eu quero fazer isso em um modelo que não sabe o número de args.
Exemplo mais completo:
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
}
Devo observar que prefiro não criar um modelo que funcione para um arg, outro que funcione para dois, etc…