История изменений
Исправление xaizek, (текущая версия) :
компилятор не может предполагать, что член класса не будет изменен где-то снаружи.
А ему и не нужно предполагать. Он может это знать. Если на участке кода всё было встроенно и никакой неизвестный код не вызываеся, то незаметное изменение значения поля может быть исключено, хоть и не всегда. Например, с полем bool
и наличием указателя на bool
в аргументах и записью в этот bool
strict-aliasing убъёт эту оптимизацию. Но в общем случае никаких гарантий на отсутствие оптимизаций из-за косвенности через указатель на агрегат нет.
Исходная версия xaizek, :
компилятор не может предполагать, что член класса не будет изменен где-то снаружи.
А ему и не нужно предполагать. Он может это знать. Если на участке кода всё было встроенно и никакой неизвестный код не вызываеся, то незаметное изменение значения поля может быть исключено, хоть и не всегда. Например, с полем bool
и наличием указателя на bool
в аргументах strict-aliasing убъёт эту оптимизацию. Но в общем случае никаких гарантий на отсутствие оптимизаций из-за косвенности через указатель на агрегат нет.