Вроде они начали гарантировать результат слева от равно
и справа от равно
И модификация объекта справа не создаст уб для этого же объекта слева
тип:
id = 2 + id++;
А вот для такого, ещё уб:
data[id] = tmp[id++];
Ну и вопросы:
Если это последняя итерация цикла и размер массивов одинаков - вылезем ли мы за границы массива?