Odpovídáte na názor ke článku Destructive Move v C++?.
Calling convention na design destructive move nikdy neměla vliv, ani C++ ABI. Pokud přidám do jazyka nějakou feature, tak si můžu dovolit upravit ABI pro potřebu té feature, pokud dřív neexistovala (přidání feature není ABI break). Navíc C++ standard nic jako calling convention nedefinuje, takže z pohledu C++ je platform ABI irelevantní.
Takže problém není úklid na úrovni ABI, problém je ten, že destructive move má corner cases, které nikdo nebyl schopný vyřešit. Takže jsme se dostali do stavu, že tomu říkáme sice move, ale move to vůbec nemusí být, a každý kdo chce implementovat move, musí implementovat taky stav, kdy něco bylo moved... většinou se ta instance prostě vyresetuje do "default constructed" stavu, ale někdy to nejde a to je pak peklo. Navíc je to zbytečný overhead, který umí kompiler odstranit jen když je move constructor a destructor inline (nebo LTO, atd...).
Ale nikdy bych neříkal nikdy. Destructive move je něco co lidi v C++ chcou, a nedají s tím pokoj, protože to je užitečná věc.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 593×
Přečteno 27 720×
Přečteno 26 401×
Přečteno 24 367×
Přečteno 22 864×