Odpovídáte na názor ke článku Destructive Move v C++?.
K tomu pár věcí, kde vidím problémy.
1) C++ před C++11 prováděl destrukci caller. Proto bylo move navrženo tak jak bylo, o tom je článek. Nešlo to změnit. A je obtížné to změnit i nyní.
-asi by šlo změnit ABI a označovat funkce nějakým flagem, aby se to při linkování nesmíchalo, ale kdyby to bylo jednoduchý, tak už to tam je.
2) Je jedno, jak se argumenty předávají, pointer můžu mít jak v zásobníku tak v registru. Záleží, v jakém kontextu se zavolá destruktor. Pokud v kontextu callee, pak by destructive move bylo standardní součástí C++. Protože to ale dělá caller, tak bez znalosti toho, co s obsahem udělala callee nemůže rozhodnout a musí si nějak poznačit, zda se obsah v callee přesunul/destruoval nebo ne. A než zavádět nějaký rt flagy, zůstalo to označení na programátorovi
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×