relacionales operadores logicos entre diferencia comandos asignacion c++ language-lawyer undefined-behavior c++17 order-of-evaluation

operadores - ¿Qué evaluará i+++i++ en C++ 17?



operadores logicos en c (1)

P0145R3 (PDF) no cambia el orden de evaluación de todas las expresiones. Sólo afecta a un pequeño número de operadores. Y la adición binaria no está en esa lista.

Por lo tanto, el código anterior permanece indefinido.

Parece que estamos recibiendo una nueva generación de "preguntas de entrevista" para C ++ (espero que no, en realidad).

Se sabe que es un comportamiento indefinido antes de C ++ 17, pero ¿estará bien definido a partir de C ++ 17 en adelante?

Dado que en este momento no parece haber un compilador que implemente esta modificación de C ++ 17, ¿puede alguien explicar cuál será, según las reglas de evaluación de expresiones, el valor de x en el siguiente código?

int i = 0; int x = i++ + i++;

Alisdair Meredith menciona este ejemplo here en su charla sobre CppCon 2016, pero no me queda del todo claro cuál será el valor final de x (aunque parece que lo que dice es que será al menos 1).

Obviamente, i mismo será en ese caso 2 al final de la expresión.