Zrovna std::move() je v C++ docela bastl. Ono to udělá move jen v případě, že má objekt move construktor, není konstantní a nemá nějaké konstantní membery (respektive všechno v hierarchii dědičnosti musí být nekonstantní a mít move constructory). Jinak to tiše fallbackne na copy. Takže když vidím v C++ zdrojáku std::move(), nevím vlastně nic. Může to udělat move i copy. To má hodně daleko k dobrému řešení, je na tom hodně vidět, že move sémantika byla dolepená až v C++11.