ExpertiDict

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

std move

ˌɛs.tiː.ˈdiː muːvsubstantivo

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.

Veja também

Todos os termos de C++