Мое внутреннее чувство говорит, что это не определено в C ++ 03 и четко определено в C ++ 0x.
Да, вы правы.Поведение не определено в C ++ 03, потому что вы пытаетесь изменить i
более одного раза между двумя точками последовательности.
Поведение хорошо определено в C ++ 0x, потому что (++i)++
эквивалентно (i += 1)++
.Побочные эффекты оператора +=
упорядочены относительно ++
(постинкремент), поэтому поведение четко определено.