C ++ 11: Mogę przejść od wielu argumentów do krotek, ale czy mogę przejść od krotki do wielu argumentów? [duplikować]
Możliwy duplikat:
Jak rozwinąć krotkę na argumenty funkcji szablonu zmiennego?
„Rozpakowywanie” krotki, aby wywołać pasujący wskaźnik funkcji
Czy w szablonach C ++ 11 istnieje sposób użycia krotki jako pojedynczych argumentów funkcji (ewentualnie szablonu)?
Przykład:
Powiedzmy, że mam tę funkcję:
void foo(int a, int b)
{
}
I mam krotkęauto bar = std::make_tuple(1, 2)
.
Czy mogę go użyć, aby zadzwonićfoo(1, 2)
w sposób templaty?
Nie mam na myśli po prostufoo(std::get<0>(bar), std::get<1>(bar))
ponieważ chcę to zrobić w szablonie, który nie zna liczby argumentów.
Bardziej kompletny przykład:
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
}
Powinienem zauważyć, że wolę nie tworzyć jednego szablonu, który działa dla jednego arg, innego, który działa dla dwóch itd.…