Chiamare una funzione per ogni argomento modello variadic e una matrice

Quindi ho del tipo X :

 typedef ... X; 

e una funzione di modello f :

 class  void f(X& x_out, const T& arg_in); 

e quindi una funzione g :

 void g(const X* x_array, size_t x_array_size); 

Ho bisogno di scrivere una funzione template variadica che faccia questo:

 template void h(Args... args) { constexpr size_t nargs = sizeof...(args); // get number of args X x_array[nargs]; // create X array of that size for (int i = 0; i < nargs; i++) // foreach arg f(x_array[i], args[i]); // call f (doesn't work) g(x_array, nargs); // call g with x_array } 

Il motivo per cui non funziona è perché non è ansible utilizzare gli argomenti di pedice in fase di runtime.

Qual è la tecnica migliore per sostituire la parte centrale di h ?

E il vincitore è Xeo:

 template X fv(const T& t) { X x; f(x,t); return x; } template void h(Args... args) { X x_array[] = { fv(args)... }; g(x_array, sizeof...(Args)); } 

(In realtà nel mio caso specifico posso riscrivere f per restituire x per valore piuttosto che come parametro out, quindi non ho nemmeno bisogno di fv sopra)