C++ 17引入了"constexpr if",它根据编译时条件进行实例化.
这是否意味着在模板函数中使用"constexpr if"而不是switch语句更好?
例如:
template<int val> void func()
{
if constexpr(val == 0) {} else
if constexpr(val == 1) {} else
...
if constexpr(val == k) {} else {}
}
// vs
template<int val> void func()
{
switch (val)
{
case 0:
break;
case 1:
break;
...
case k:
break;
default:
break;
}
}
Run Code Online (Sandbox Code Playgroud)
if constexpr被引入以消除某些错误形成的分支.在你的情况下,你只是在a上做一些操作int,所以如果另一个分支格式正确,那么分支不应该是格式错误的.使用它并没有多大意义.
如上所述,if constexpr除了保证编译器将删除所有其他分支之外,使用不提供任何实际优点.但我希望有一个优秀的编译器也可以使用switch,以及实例化val时的常量func.
我会用这个switch陈述,但那只是我.所以,选择你喜欢的那个.
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |