s locais retornados são automaticamente calculados com valores
Seguindo um comentário que fiz sobre isso:
passing std :: vector para construtor e mover semântica É ostd::move
necessário no código a seguir, para garantir que o valor retornado seja um valor
std::vector<string> buildVector()
{
std::vector<string> local;
// .... build a vector
return std::move(local);
}
Entendo que isso é necessário. Muitas vezes, isso é usado ao retornar umstd::unique_ptr
de uma função, no entanto GManNickG fez o seguinte comentário:
Entendo que, em uma declaração de retorno, todas as variáveis locais são automaticamente valores x (valores expirados) e serão movidas, mas não tenho certeza se isso se aplica apenas ao próprio objeto retornado. Portanto, o OP deve prosseguir e colocar isso lá até que eu esteja mais confiante de que não deveria ter que ser. :)
Alguém pode esclarecer se ostd::move
é necessário
O compilador de comportamento depende?