C++ · Intermediário · Inglês · Técnico
rvalue reference
Referência declarada com && que só se liga a rvalues, ou seja, a temporários. É o mecanismo que permite sobrecargas de movimento, distintas das de cópia.
Onde usar
Aparece nas assinaturas de construtores e atribuições de movimento, como Classe(Classe&&). Em code review, lembra-se que dentro da função o parâmetro T&& tem nome e é um lvalue.
Em código
void usa(std::string&& s) {
std::cout << "temporario: " << s;
}
std::string nome = "Ana";
usa(std::string("Rui")); // ok
// usa(nome); // erro: nome é lvalueExemplos
The move constructor takes an rvalue reference to the other object.
O construtor de movimento recebe uma rvalue reference para o outro objeto.
An rvalue reference binds only to temporaries, not to named variables.
Uma rvalue reference só se liga a temporários, não a variáveis com nome.
Cuidado
T&& em um tipo deduzido de template é uma forwarding reference, não uma rvalue reference.