История изменений
Исправление intelfx, (текущая версия) :
Ну а потом ты изменишь объект, который по правую сторону от reinterpret_cast’а, и попробуешь считать его в int32_t заново, и компилятор решит, что поскольку записей в int32_t не было, результат чтения по указателю можно переиспользовать. И переиспользует.
Да, одна эта строчка в вакууме оптимизациям никак не мешает. Но о том и речь, что в реальных программах эти строчки не в вакууме, и оптимизации проводятся тоже над реальными программами (в которых больше одной строчки), а не над строчками в вакууме.
Исправление intelfx, :
Ну а потом ты изменишь объект, который по правую сторону от reinterpret_cast’а и попробуешь считать его в int32_t заново, и компилятор решит, что поскольку записей в int32_t не было, результат чтения по указателю можно переиспользовать. И переиспользует.
Да, одна эта строчка в вакууме оптимизациям никак не мешает. Но о том и речь, что в реальных программах эти строчки не в вакууме, и оптимизации проводятся тоже над реальными программами (в которых больше одной строчки), а не над строчками в вакууме.
Исходная версия intelfx, :
Ну а потом ты изменишь объект, который по правую сторону от reinterpret_cast’а и попробуешь считать его в int32_t заново, и компилятор решит, что поскольку записей в int32_t не было, результат чтения по указателю можно переиспользовать. И переиспользует.
Да, одна эта строчка в вакууме оптимизациям никак не мешает. Но о том и речь, что в реальных программах эти строчки не в вакууме, и оптимизации проводятся над реальными программами, в которых больше одной строчки.