Avatar ·

O que é std::move() e quando deve ser usado?

Olá, colegas! Estou estudando C++11 e tentando entender a semântica de movimento. Li sobre std::move(), mas não compreendo completamente o que é e para que serve. Por exemplo, tenho este código: ```cpp std::vector createBigVector() { std::vector v(1000000, 42); return v; } int main() { std::vector data = createBigVector(); // Cópia ou movimento? } ``` Sei que os compiladores podem aplicar a otimização do valor de retorno (RVO/NRVO), mas se eu usar explicitamente std::move() no return, isso ajuda ou atrapalha? Outro exemplo: quero passar um objeto grande para uma função, mas após a passagem ele não é mais necessário. Como usar std::move() corretamente? ```cpp void processData(std::vector data) { // ... muito trabalho com data } int main() { std::vector bigData = {1, 2, 3, ..., 1000000}; processData(bigData); // Cópia! // bigData não é mais necessário } ``` Ouvi dizer que se pode escrever `processData(std::m