Это использование if constexpr
не имеет заметных отличий от if
в соответствии со стандартом C ++.
Однако, несколько отличающиеся его варианты могут привести к заметной разнице в том, какие символы использует единица компиляции,Мне кажется вероятным, что это приведет к заметным различиям.
Большинство современных компиляторов могут и будут уменьшать это значение до if (false)
во время оптимизации, даже если не constexpr
, и устранение мертвых ветвей - довольно простая оптимизация.В отладочной сборке они могут оставить мертвый код в покое, в то время как они могут устранить его с помощью constexpr
.
. Проводник компилятора отлично подходит для ответа на конкретные случаи такого рода вопросов, поскольку его довольно легко увидеть.сгенерированная сборка каждого крупного компилятора.Поэтому, если вы хотите узнать, есть ли разница в настройке отладки или выпуска MSVC 2015 по умолчанию, вы можете увидеть ее там.