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 al std::forward
sobre los argumentos?¿Cómo se podría llamar a std :: forward en todos los argumentos en una función variadica?
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á el desempaque manual de ... params y todavía no estoy allí todavía. ¿Hay una sintaxis más rápida que funcionaría?
Agregue a eso cómo se deben pasar los parámetros. Creo que los tutoriales muestran 'void f (Params && ... params)' – UncleBens
@Uncle: Añadido, creo que tienes razón. – GManNickG
Hablando como un día de pirata, uso 'void f (Ar && ... arg)' – woolstar