Qualquer solução para descompactar um vetor para argumentos de função em C ++?
Eu estou realmente pensando em algo semelhante ao operador '*' em python assim:
args = [1,2,4]
f(*args)
Existe uma solução semelhante em C ++?
O que eu posso apresentar é o seguinte:
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])
}
};
Acima eu assumo apenasint
tipo de argumento.
O problema é que eu sinto que é um aborrecimento para escrever todas as especializações de unpack_caller para valor diferente denum_args
.
Alguma boa solução para isso? Obrigado.