![]() |
1
10
if语句不是constexpr这一事实并不意味着它不能在编译时作为constexpr表达式的一部分进行计算。在你的例子中,
引入constexpr if语句来解决问题。获取constexpr函数以在编译时得到评估不是问题。
下面是一个例子,其中
尝试删除
另外,请注意,您总是可以使用其他方法来解决这个问题,但是
|
![]() |
2
2
两者之间的区别
对于上述代码,编写
同样,这并不重要,因为这两个代码路径都是有效的。当使用带有常量值的函数时,通常的编译器优化应该开始。
真正的兴趣
如果t是int,则代码路径
在搜索准则时,编译器已经要求:使用
对于在编译时可以使用两个有效路径计算if条件的情况,请使用
如果走极端,表达式可能变得过于复杂,编译器无法在生产构建中对其进行优化,在这种情况下
|
![]() |
Wad · 斐波那契和“if constexpr” 7 年前 |
|
user6071088 · 在constexpr函数中切换 7 年前 |
![]() |
Sneftel · 为什么在constexpr函数中不允许goto? 7 年前 |
![]() |
Akira · 基于模式创建位掩码,如constexpr 7 年前 |