( egmont | 2021. 04. 08., cs – 00:05 )

Folytatva:

Egyrészt, a definíció az az, hogy ki kell értékelnie, lásd például itt, persze ez nem a specifikáció maga.

Másrészt, az optimalizálásnak olyannak kell lennie, hogy garantálja a funkcionálisan azonos viselkedést. Olyat soha nem csinálhat egyetlen fordító sem „optimizálás” címszó alatt, hogy kihagyja egy érdemleges dolgot végző függvény meghívását. Elvileg szó nem lehet olyanról, hogy eltérő legyen a program viselkedése másmilyen optimizálási szint esetén(*). De olyat például csinálhat, hoogy ha látja, hogy func0() és func1() is üres, vagy mondjuk mindkettő csak visszaad egy – egyébként eltérő – értéket de amúgy semmi mást nem tesz, akkor ezt az egész ?:-os sort khagyja, mert be tudja bizonyítani a fordító, hogy funkcionálisan megegyező (és speciel kissé gyorsabb) kódot generált.

(*) Ha olyat írsz le, ami undefined behavior a nyelv specifikációja szerint, akkor csinálhat ilyet legalásain a fordító. Meg olyat is látott már a világ, hogy az „elvileg” és a „gyakorlatilag” nem egyezett meg.