Gibt es eine Lösung zum Entpacken eines Vektors in Funktionsargumente in C ++?
Eigentlich denke ich an etwas Ähnliches wie den Operator '*' in Python:
args = [1,2,4]
f(*args)
Gibt es eine ähnliche Lösung in C ++?
Was ich mir einfallen lassen kann, ist wie folgt:
template <size_t num_args, typename FuncType>
struct unpack_caller;
template <typename FuncType>
struct unpack_caller<3>
{
void operator () (FuncType &f, std::vector<int> &args){
f(args[0], args[1], args[3])
}
};
Oben nehme ich nur anint
Argumenttyp.
Das Problem ist, dass ich denke, es ist mühsam, alle Spezialisierungen von unpack_caller für unterschiedliche Werte von zu schreibennum_args
.
Irgendeine gute Lösung dafür? Vielen Dank.