ExpertiDict

C++ · Intermediário · Inglês · Técnico

rvalue reference

ˈɑːr.væl.juː ˈrɛfɹənssubstantivo

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 é lvalue

Exemplos

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.

Veja também

Todos os termos de C++