if constexpr
требует постоянного выражения для условия. Поэтому is_constant_evaluated
, конечно, всегда будет правдой в таком контексте.
Он предназначен для обычного if
. Цель состоит в том, чтобы не входить в путь кода, который недопустим в функции constexpr
при оценке в константном выражении. Но чтобы он выполнялся во время выполнения. Это не для того, чтобы полностью исключить эти пути кода из функции.