Doble asignación de la misma variable en una expresión en C ++ 11

El estándar C ++ 11 (5.17, expr.ass) declara que

En todos los casos, la asignación se secuencia después del cálculo del valor de los operandos derecho e izquierdo, y antes del cálculo del valor de la expresión de asignación. Con respecto a una llamada de función de secuencia indeterminada, la operación de una asignación compuesta es una evaluación única

Como lo entiendo, todas las expresiones que forman parte de la tarea dada serán evaluadas antes de la tarea en sí. Esta regla debería funcionar incluso si modifico la misma variable dos veces en la misma asignación, lo cual, estoy bastante seguro, era un comportamiento indefinido antes.

Será el código dado:

int a = 0;
a = (a+=1) = 10;

if ( a == 10 ) {
    printf("this is defined");
} else {
    printf("undefined"); 
}

siempre evaluar paraa==10?

Respuestas a la pregunta(3)

Su respuesta a la pregunta