Dmitry Yemanov пишет:
Он в выражении func1() + func2() при включенной оптимизации сначала
предпочитает выполнить func2 :-( На 2003-й студии та же фигня. Самое
обидное, что в тестах уровня "палки и веревки" все ОК, а в рабочем
проекте - ахтунг. Из-за этого до сих пор не могу баг-репорт им
состряпать...
Аднака в С/С++ гарантируется выполнение слева на право только для
операторов "&&", "||", ",". в остальных случаях компилятор волен
выбирать любой порядок.
То же и при вызове функции, её аргументы могут вычисляться в любом порядке.