¿Alguna solución para desempaquetar un vector para argumentar funciones en C ++?

Realmente estoy pensando en algo similar al operador '*' en python como este:

args = [1,2,4]
f(*args)

¿Hay una solución similar en C ++?

Lo que se me ocurre es lo siguiente:

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])
    }
};

Encima asumo soloint tipo de argumento

El problema es que siento que es una molestia escribir todas las especializaciones de unpack_caller por un valor diferente denum_args.

¿Alguna buena solución a esto? Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta