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&nbsp;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.