Eu estava apenas escrevendo uma fábrica de objetos genéricos e usando a meta-biblioteca do pré-processador boost para fazer um modelo variável (usando 2010 e não os suporta). Minha função usa referências rval std::forward
para fazer um encaminhamento perfeito e isso me fez pensar ... quando C ++ 0X fosse lançado e eu tivesse um compilador padrão, faria isso com modelos reais variadic. Mas como, eu invocaria std::forward
os 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.
}
A única maneira que consigo imaginar seria a descompactação manual de ... params e também não cheguei lá ainda. Existe uma sintaxe mais rápida que funcionaria?
c++
c++11
variadic-templates
rvalue-reference
perfect-forwarding
Edward Strange
fonte
fonte
void f(Params&& ...params)
void f(Ar&& ...arg)