Если шрот, да, это так. В этой ситуации C ++ не определяет, в каком порядке должно вычисляться выражение, поскольку обе стороны имеют побочные эффекты. Таким образом, один компилятор может сначала вычислить левую сторону, а второй - вычислить с правой стороны. Но если вы посмотрите на это , вы обнаружите, что
a[i] = i++; // undefined behavior until C++17
Итак, вы можете использовать эту строку, только если вы используете C ++ 17.