C++ · Intermediário · Inglês · Técnico
std move
Função que não move nada: apenas converte o argumento em rvalue reference, sinalizando que seus recursos podem ser roubados. O movimento real acontece no construtor ou atribuição chamados.
Onde usar
Aparece em code review quando alguém move um objeto e depois o usa. Também é questionado em return std::move(local), que normalmente atrapalha a otimização de retorno.
Em código
std::string a = "texto longo o bastante";
std::string b = std::move(a); // a: movida
std::vector<std::string> v;
v.push_back(std::move(b));Exemplos
Don't use the object after std move, it's in a moved-from state.
Não use o objeto depois do std move, ele está em estado movido.
Remove that std move from the return, it prevents copy elision.
Tire esse std move do return, ele impede a elisão de cópia.
Cuidado
Usar o objeto depois de std::move, exceto para reatribuir ou destruir, é um erro de lógica comum.