C ++ 11: Puedo pasar de múltiples args a tuplas, pero ¿puedo pasar de una tupla a múltiples args? [duplicar]
Posible duplicado:
¿Cómo puedo expandir una tupla en los argumentos de la función de plantilla variadic?
"Desempaquetar" una tupla para llamar a un puntero de función correspondiente
En las plantillas de C ++ 11, ¿hay una manera de usar una tupla como los argumentos individuales de una función (posiblemente plantilla)?
Ejemplo:
Digamos que tengo esta función:
void foo(int a, int b)
{
}
Y tengo la tuplaauto bar = std::make_tuple(1, 2)
.
¿Puedo usar eso para llamar?foo(1, 2)
de una manera templada?
No me refiero simplementefoo(std::get<0>(bar), std::get<1>(bar))
ya que quiero hacer esto en una plantilla que no conoce el número de argumentos.
Ejemplo más 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
}
Debo tener en cuenta que preferiría no crear una plantilla que funcione para un argumento, otra que funcione para dos, etc.