RVO určitě potřebuješ, pokud static T foo() je použit jako konstruktor... Je to alternativní způsob konstrukce objektu, zejména oblíbená lidmi, kteří umí i v Rustu (jo trochu si utahuju).
Ale primárně to beru tak, že prostě vrácením objektu chci udělat jeho "přesun" z kontextu do kontextu. A pokud se to podaří bez fyzického přesunu, je to optimalizace.
Tuhle optimalizaci používám právě u coro::future, kdy je třeba získat pointer na tenhle objekt před tím, než je vrácen volajícímu. A potřebuju zajistit, že ten pointer platí i po návratu z té funkce. Proto má zakázaný kopírování a přesun.
Pozor na to, že reference je jiný pointer, takže i u reference můžeš vrátit něco, co referuje něco kde nic není. Na mechanismus prodlužování lifetime referencí bych nespoléhal, ne každý ty pravidla zná
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 51 190×
Přečteno 24 017×
Přečteno 22 904×
Přečteno 21 069×
Přečteno 17 807×