Qraizer: Возвращаясь к тезису, я даже больше скажу. UB в Стандарте и присутствует как раз для того, чтобы максимально развязать руки оптимизаторам. Всё, что может их поломать, отнесено к UB. Увы, мы хотим, чтобы компилятор, когда строит отображение виртуальной исполнительной C/C++ машины на реальный процессор, всё сделал за нас, исходя из его знаний о нём и его особенностях. К сожалению, компилятор видит лишь то, что мы ему написали, а не то, что мы имели в голове, когда писали, и ему категорически сложно бывает нас понять. Есть языки, которые позволяют многое рассказать компилятору о нашим намерениях, например Ада. Там заманаешься объяснять компилеру каждый свой чих, и нам это также не нравится, как и полная анархия. Плюсы давно уже идут по пути декларативности намерений, буквально с первого Стандарта. Найти золотую середину между чёткой формализацией своих идей и полнотой свободы компилятору бывает непросто.
Автор тезиса утверждает, что такой компилятор C/C++ вообще почти ничего не сможет оптимизировать.
Он близок к истине. Не настолько категорично, но да, компиляторы вернутся в начало 90-ых.
В догонку, если вы там ещё спорите, то могу посоветовать в качестве контраргумента то, что понятие доказательства является довольно нечётким термином, и что те оптимизации, которые мы сейчас имеем на стороне фронт-энда, являются строго и математически выведенными и показаны их безопасность. (За бак-энд оптимизацию говорить, думаю, тут будет вне контекста, мы ж не ассемблер обсуждаем.) Так что пусть расслабится, уже "всё" доказано до нас. Но за это надо платить соблюдением формальных правил, которые требуют не впадать в UB, иначе вся математика летит к чертям.