Por que o C ++ não move referências de rvalue de construção por padrão? [duplicado
Esta pergunta já tem uma resposta aqui:
Referência de valor é tratada como um valor L 4 respostas construtor de referência @value é chamado em vez do construtor de referência rvalue 1 respostaDiz que tenho a seguinte função
void doWork(Widget && param) // param is an LVALUE of RRef type
{
Widget store = std::move(param);
}
Por que preciso transmitirparam
volta a um rvalor comstd::move()
? Não deveria ser óbvio que o tipo deparam
é rvalue desde que foi declarado na assinatura da função como uma referência rvalue? O construtor de movimentação não deve ser invocado automaticamente aqui somente com este princípio?
Por que isso não acontece por padrão?