- Apple Watch
- iPhone topik
- Xiaomi Mi 11 Ultra - Circus Maximus
- Google Pixel topik
- Megdöntheti az iPhone 4 rekordját az iPhone 17
- Xiaomi 14T Pro - teljes a család?
- Samsung Galaxy A55 - új év, régi stratégia
- Elalmásodik a Xiaomi: 100 wattos töltéssel érkezik a 16 Pro Max
- Samsung Galaxy Watch7 - kötelező kör
- Xiaomi Watch 2 Pro - oké, Google, itt vagyunk mi is
Új hozzászólás Aktív témák
-
LordX
veterán
válasz
jattila48 #2875 üzenetére
Mivel a Copy elision-t már 12 éve engedi a szabvány, ma már nem nagyon van olyan fordító, ami nem tudná. A 2000-es évek elején még volt.
A szabvány logikáját kell követni: ha valamit copy/direct initialization-el definiálsz, akkor konstruktor overload van. Ez akkor is működik, ha valami kitekert konstruktorod van (const rvalue ref-et váró, leszármazott referenciát váró, stb.). Ha ez megvan, utána jön a "triviális" optimizáció, de ez csak akkor van, ha copy vagy move konstruktor játszik, a fura konstruktorok nincsenek kioptimalizálva - és erősen valószínű, hogy azokat azért csináltad, mert szükséged van rá.
Csak ugye a triviális annyira nem is triviális - mi van, ha van egy olyan kódod, hogy:
T f() { return T(); }
T g() { return f(); }
void h() { T x = g(); }(Tetszőlegesen bonyolult f és g függvényekkel, nem csak ilyen kis Móricka példával.) Hány darab copy/move van itt, amit mellőzni lehet? 1? 2? 4? Erősen attól függ, hogy mit inline-olsz, ami már alapból egy optimizációs kérdés, és másik fordító máshogy dönthet..
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Konzol felvásárlás!! Playstation 5, Playstation 5 Pro
- HIBÁTLAN iPhone XS Max 64GB Gold -1 ÉV GARANCIA - Kártyafüggetlen, MS2898, 100% Akkumulátor
- DELL Precision 5540 Workstation i7-9850H Nvidia Quadro T1000 16GB 512GB 15.6 új akksi 1év garancia
- Konzol felvásárlás!! Xbox Series S, Xbox Series X
- LENOVO Legion Y530-15ICH - 15,6" FHD IPS - i7-8750H - 8GB - ÚJ 512GB SSD - Win10 - GTX 1050 Ti
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest