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