Como alguém chamaria o std :: encaminhe todos os argumentos em uma função variádica?
-
26-09-2019 - |
Pergunta
Eu estava apenas escrevendo uma fábrica de objetos genéricos e usando a meta-biblioteca de pré-processador Boost para criar um modelo variádico (usando 2010 e não os suporta). Minha função usa referências rval e std::forward
Para fazer o encaminhamento perfeito e me fez pensar ... quando o C ++ 0x sai e eu tinha um compilador padrão, eu faria isso com modelos variados reais. Como eu chamaria std::forward
nos 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 eu consigo pensar exigiria a descompactação manual de ... parâmetros e ainda não estou lá. Existe uma sintaxe mais rápida que funcionaria?
Solução
Você faria:
template <typename ...Params>
void f(Params&&... params)
{
y(std::forward<Params>(params)...);
}
o ...
Praticamente diz "Pegue o que está à esquerda e, para cada parâmetro de modelo, descompacte -o de acordo".
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow