Evitar cópia de objetos com a instrução "return"
Eu tenho uma pergunta muito básica em C ++. Como evitar a cópia ao retornar um objeto?
Aqui está um exemplo :
<code>std::vector<unsigned int> test(const unsigned int n) { std::vector<unsigned int> x; for (unsigned int i = 0; i < n; ++i) { x.push_back(i); } return x; } </code>
Pelo que entendi como o C ++ funciona, esta função irá criar 2 vetores: o local (x), e a cópia de x que será retornada. Existe uma maneira de evitar a cópia? (e eu não quero retornar um ponteiro para um objeto, mas o próprio objeto)
Qual seria a sintaxe dessa função usando "mover semântica" (que foi declarada nos comentários)?