Odpověď na názor

Odpovídáte na názor ke článku Něco o callback funkcích v C++.

  • 28. 6. 2025 9:45

    linuxák

    Move je v Rustu taky bezpečné, dělá to destructive move, tozn. původní objekt se zničí a interně je to implementované jako memcpy. Má to dost výhod, není potřeba psát kód pro move (což ušetří práci a nedá se v tom udělat chyba) a asi ani nejde vymyslet nic rychlejšího než memcpy, takže to má i vysoký výkon.

    V C++ nebylo možné destructive move udělat ze dvou důvodů. První je, že C++ nemá borrow checker a tedy ani koncept objektu v moved stavu, který se už nesmí použít. Tohle by šlo simulovat něčím jako std::optional nebo nullptr, ale je těžké to nějak rozumně přidat vedle C++ copy sémantiky, aby se move jednoduše požívalo a dávalo to smysl. Druhý důvod, proč nešlo destructive move v C++ udělat, je ten, že v tomto konceptu nelze mít v objektu ukazatel/referenci na sama sebe (adresa se po move změní, dělá to memcpy) a přidání takového pravidla by zase rozbilo spoustu existujícího kódu.