Avatar ·

Qu'est-ce que std::move() et quand doit-on l'utiliser ?

Bonjour collègues ! J'étudie C++11 et j'essaie de comprendre la sémantique de déplacement. J'ai lu sur std::move(), mais je ne comprends pas complètement ce que c'est et à quoi ça sert.\n\nPar exemple, j'ai ce code :\n\n```cpp\nstd::vector createBigVector() {\n std::vector v(1000000, 42);\n return v;\n}\n\nint main() {\n std::vector data = createBigVector(); // Copie ou déplacement ?\n}\n```\n\nJe sais que les compilateurs peuvent appliquer l'optimisation de la valeur de retour (RVO/NRVO), mais si j'utilise explicitement std::move() dans le return, est-ce que ça aide ou ça gêne ?\n\nAutre exemple : je veux passer un gros objet à une fonction, mais après l'avoir passé, je n'en ai plus besoin. Comment utiliser correctement std::move() ?\n\n```cpp\nvoid processData(std::vector data) {\n // ... beaucoup de travail avec data\n}\n\nint