Atribuição dupla da mesma variável em uma expressão em C ++ 11
O padrão C ++ 11 (5.17, expr.ass) afirma que
Em todos os casos, a atribuição é sequenciada após o cálculo do valor dos operandos direito e esquerdo, e antes do cálculo do valor da expressão de atribuição. Com relação a uma chamada de função seqüenciada indeterminadamente, a operação de uma atribuição composta é uma única avaliação
Pelo que entendi, todas as expressões que fazem parte da atribuição dada serão avaliadas antes da atribuição em si. Essa regra deve funcionar mesmo se eu modificar a mesma variável duas vezes na mesma atribuição, o que, tenho quase certeza, era um comportamento indefinido antes.
O código fornecido:
int a = 0;
a = (a+=1) = 10;
if ( a == 10 ) {
printf("this is defined");
} else {
printf("undefined");
}
sempre avaliar paraa==10
?