新しいC++ 11標準がシーケンスポイントの記述方法を変更したので、私はC++ 03とC++ 11の間で何が変更されたかを正確に調べようとしています。C++ 11ではなくC++ 03でコードにシーケンスポイントがある状況はありますか?
特に、同じように見えるコードがC++ 11ではシーケンスポイントを持ち、C++ 03ではシーケンスポイントを持たない状況はありますか?
新しいC++ 11標準がシーケンスポイントの記述方法を変更したので、私はC++ 03とC++ 11の間で何が変更されたかを正確に調べようとしています。C++ 11ではなくC++ 03でコードにシーケンスポイントがある状況はありますか?
特に、同じように見えるコードがC++ 11ではシーケンスポイントを持ち、C++ 03ではシーケンスポイントを持たない状況はありますか?
C++ 11にはシーケンスポイントはありません。むしろ、リレーションシップの前にシーケンスされ、リレーションシークの後にシーケンスされます。ここで
は行動がC++ 03とC++ 11
int x = 10;
++++x; // well defined in C++11
int x = 10;
x = ++x +1; //well defined in C++11
なぜ間で異なる特徴いくつかの些細な例ですか?回答と関連スレッドthisを見てください。
よく知られている例は、プリインクリメント演算子です。
int i = 0;
++ ++ ++ i;
C++ 03ではこれがUBであり、C++ 11では、各割り当てが次の評価の前に順序付けられます。
標準の検索では、「順序ポイント」という用語が「前に順序付けられた」などの理由で取り除かれ、多くのルールが最初から書き直されているため、苦労しています。
'標準点の検索では「シーケンスポイント」という用語が使われていないので、これは厳しいですが、これが私がこの質問を投稿した正確な理由です。 – shuttle87
@ shuttle87うん、それについては申し訳ありませんが、少なくとも私は1つの例を思いつきました; v) – Potatoswatter