J'écrivais juste une fabrique d'objets génériques et j'utilisais la méta-bibliothèque du préprocesseur boost pour créer un modèle variadique (en utilisant 2010 et cela ne les prend pas en charge). Ma fonction utilise des références rval et std::forward
pour faire un transfert parfait et cela m'a fait réfléchir ... quand C ++ 0X sortait et que j'avais un compilateur standard, je le ferais avec de vrais modèles variadiques. Mais comment pourrais-je invoquer std::forward
les arguments?
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 seule façon dont je peux penser nécessiterait un déballage manuel de ... paramètres et je n'y suis pas encore tout à fait non plus. Existe-t-il une syntaxe plus rapide qui fonctionnerait?
la source
void f(Params&& ...params)
void f(Ar&& ...arg)