Википедия говорит, что точки последовательности устарели в С++ 11. Что это значит? Означает ли это, что поведение undefined из-за точек последовательности не имеет эффектов?
С++ 11 без точки последовательности?
Ответ 1
Термин "точка последовательности" устарел, чтобы дать более четкое объяснение. Язык С++ не должен меняться.
Вы можете найти более подробную информацию здесь
Ответ 2
Одна из основных проблем с термином "точка последовательности" заключается в том, что она предлагает тип абсолютной последовательности, которая никогда не существовала. Рассмотрим выражение a = (b(),c()) + d();
. Существует точка последовательности между b()
и c()
, но это не означает, что все остальное может быть описано как явно до c()
или четко после b()
. Было бы возможно, чтобы b()
, c()
и d()
были оценены в порядке bcd
, bdc
или dbc
. Термин "точка последовательности" на самом деле не сделал этого ясно, но более новая терминология делает.
Ответ 3
Фраза "точка последовательности" устарела в пользу более явной фразы типа "секвенирован раньше". Точки последовательности были уже понятны. Добавление многопоточности делает их практически невозможными для кого-либо, поэтому они были (по крайней мере в основном) устранены в пользу других формулировок.