C++ · Intermediário · Inglês · Técnico
rvalue
Expressão temporária sem nome persistente, como um literal ou o resultado de uma função que retorna por valor. É candidata a ter seus recursos movidos em vez de copiados.
Onde usar
O compilador usa a diferença entre lvalue e rvalue para escolher entre sobrecargas de cópia e de movimento. Em code review, aparece ao se discutir por que std::move é necessário.
Em código
int soma(int a, int b) { return a + b; }
int x = soma(1, 2); // soma(1, 2) é rvalue
int&& r = soma(3, 4); // liga a rvalueExemplos
The result of that function is an rvalue, so we can move from it.
O resultado dessa função é um rvalue, então dá para mover dele.
Even a variable declared as rvalue reference is an lvalue inside the function.
Mesmo uma variável declarada como rvalue reference é um lvalue dentro da função.
Cuidado
Não é o mesmo que valor à direita do sinal de igual; o conceito depende de a expressão ter identidade ou não.
Antônimos
lvalue
Origem
Originalmente right value, o valor que aparece à direita de uma atribuição.