C ++ 11: Ich kann von mehreren Argumenten zu Tupeln wechseln, aber kann ich von Tupeln zu mehreren Argumenten wechseln? [Duplikat]
Mögliche Duplikate:
Wie erweitere ich ein Tupel in die Argumente der variadischen Vorlagenfunktion?
Tupel „auspacken“, um einen passenden Funktionszeiger aufzurufen
Gibt es in C ++ 11-Vorlagen eine Möglichkeit, ein Tupel als die einzelnen Argumente einer (möglicherweise Vorlagen-) Funktion zu verwenden?
Beispiel:
Nehmen wir an, ich habe diese Funktion:
void foo(int a, int b)
{
}
Und ich habe das Tupelauto bar = std::make_tuple(1, 2)
.
Kann ich das benutzen, um anzurufenfoo(1, 2)
auf templaty Weise?
Ich meine nicht einfachfoo(std::get<0>(bar), std::get<1>(bar))
da ich dies in einer Vorlage tun möchte, die die Anzahl der Argumente nicht kennt.
Vollständigeres Beispiel:
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
}
Ich sollte beachten, dass ich es vorziehen würde, keine Vorlage zu erstellen, die für ein Argument, eine andere für zwei, usw. funktioniert.