Здравствуйте, Аноним, Вы писали:
А>А>>> f(i++) + f(i++);
А>
А>>>Понятно, почему здесь UB?
B>>Здесь нет UB. Можно привести аргументацию?
А>Можно, конечно. Здесь нет точек следования, разделяющих две модификации переменной i.
А>Можете ли Вы такие точки следования указать?
А точки перед вызовом функции и прямо перед возвратом из нее. Я считаю, компилятор, если у него одной переменной дважды между точками следовования приводит к каким-то проблемам, не должен оптимизировать это выражение таким образом. То, что результат не определено — это вопросов не вызывает.