Здравствуйте, rg45, Вы писали:
R>Повторяю ещё раз свой ответ, неопределённое поведение вот здесь:
R>R>8.7.3 The return statement
R>2 . . . Otherwise, flowing off the end of a function other than main or a coroutine ([dcl.fct.def.coroutine]) results in undefined behavior.
ну так и такой код
char buffer[2] = {0x01, 0x02};
short value = *(reinterpret_cast<short*>(buffer));
строго говоря UB. Но никто же не отправляет программу в нокаут из-за этого. Это просто сломает невообразимую массу кода.
Так что нельзя говорить, что при UB компилятор волен делать что угодно. Нифига он не волен

Он может делать оптимизации — это да. А вот так просто класть программу — это беспредел.