frage an wisser
-
hai!
if ( func1() || func2() ) // ...
ist die reihenfolge der funktionsaufrufe definiert?
mfg,
n.
-
Ja, links vor rechts. Mehr noch: Der rechte Ausdruck wird gar nicht aufgerufen, wenn der linke schon true ist.
-
allerdings gilt das, soweit ich weiß, nur für built-in-Typen.
Bei überladenem op|| werden beide Ausdrücke ausgewertet und die Reihenfolge ist meiner Meinung nach auch nicht definiert.
-
wer || überläd ist auch selber schuld
-
8^^ schrieb:
wer || überläd ist auch selber schuld
...kann aber durchaus sinnvoll sein (für expression templates), zB die überladenden Operatoren für Boost.Bind.
-
klugscheisser schrieb:
8^^ schrieb:
wer || überläd ist auch selber schuld
...kann aber durchaus sinnvoll sein (für expression templates), zB die überladenden Operatoren für Boost.Bind.
Wobei expression templates dann wieder nur expression wrapper beinhalten und intern mit dem eingebauten op|| dafür sorgen, dass der zweite teil des Ausdrucks nur dann ausgepackt wird wenns nötig ist.
-
oops.