2012-02-15 6 views

risposta

9

Non ci sono punti di sequenza in C++ 11, piuttosto ci sono sequenze precedenti e sequenziali dopo le relazioni.

Ecco alcuni esempi banali in cui un comportamento diverso tra C++ e C++ 03 11

int x = 10; 
++++x; // well defined in C++11 

int x = 10; 
x = ++x +1; //well defined in C++11 

Perché? Dai un'occhiata alla risposta this e ai thread correlati.

4

Penso che l'esempio più noto sia l'operatore di pre-incremento.

In C++ 03, questo sarebbe UB, e in C++ 11, ogni incarico è ordinato prima della prossima valutazione.

Cercare lo standard per le differenze è difficile perché hanno eliminato la terminologia del "punto di sequenza" a favore di "ordinato prima" e simili, e ha riscritto gran parte delle regole da zero.

+0

'Cercare lo standard per le differenze è difficile perché hanno eliminato la terminologia del" punto di sequenza ": questo è il motivo esatto per cui ho postato questa domanda. – shuttle87

+0

@ shuttle87 Sì, mi dispiace, ma almeno mi è venuto in mente un esempio: v) – Potatoswatter

Problemi correlati