Jakiekolwiek rozwiązanie do rozpakowania wektora do argumentów funkcji w C ++?
W rzeczywistości myślę o czymś podobnym do operatora '*' w pythonie w ten sposób:
args = [1,2,4]
f(*args)
Czy istnieje podobne rozwiązanie w C ++?
Oto, co mogę wymyślić:
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])
}
};
Powyżej zakładam tylkoint
typ argumentu.
Problem polega na tym, że uważam, że pisanie wszystkich specjalizacji unpack_caller dla różnych wartościnum_args
.
Jakieś dobre rozwiązanie tego? Dzięki.