Я знаю, что i=i++; - это поведение undefined, потому что i изменяется дважды до точки последовательности ;.
Но я не знаю, гарантирует ли компилятор случай, как показано ниже: undefined:
int func(int &i)
{
i++;
return i;
}
int i = 1;
i = func(i);