ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1246011 Топик полностью
VladislavS. (03.10.2022 14:53, просмотров: 110) ответил йцyкeн на Нет. Для функции plusminus x не является константой, поэтому в ассемблерном тексте проверка условия сохранилась в виде инструкции cmove. А вот в местах вызова фактические параметры являются константами, и там оптимизатор заменил вызовы plusminus результатами этих вызовов.
Вот мы и вышли на разный уровень - либо это константа по стандарту языка, либо оптимизатор так решил. Поэтому, где рассчитываем иметь константу пишем if constexpr, чтобы муха не проскочила. Не всегда так просто определить "на глаз" константность данных, пусть этим компилятор занимается.