una tipos parametros llamadas lenguaje las invoca implementan funciones funcion float estandar con como características c++ c++11

c++ - tipos - ¿Cómo se podría llamar a std:: forward en todos los argumentos en una función variadica?



llamadas a funciones en c (1)

Estaba escribiendo una fábrica de objetos genéricos y utilizando la metabiblioteca del preprocesador boost para crear una plantilla variadica (utilizando 2010 y no los admite). Mi función utiliza referencias de rval y std::forward para hacer un reenvío perfecto y me hizo pensar ... cuando salga C ++ 0X y tuviera un compilador estándar, lo haría con plantillas variadic reales. ¿Cómo, sin embargo, llamaría a std::forward sobre los argumentos?

template <typename ...Params> void f(Params... params) // how do I say these are rvalue reference? { y(std::forward(...params)); //? - I doubt this would work. }

La única forma en que puedo pensar requeriría el desempaque manual de ... params y aún no estoy allí todavía. ¿Hay una sintaxis más rápida que funcionaría?


Tu harías:

template <typename ...Params> void f(Params&&... params) { y(std::forward<Params>(params)...); }

El ... o menos dice "toma lo que está a la izquierda, y para cada parámetro de plantilla, descomprímelo como corresponda".