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?

questionAnswers(6)

yourAnswerToTheQuestion