gpt4 book ai didi

c++ - "constexpr if"比 switch 语句好吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:53 25 4
gpt4 key购买 nike

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;
}
}

最佳答案

if constexpr 的引入是为了在条件为假时消除某些格式错误的分支。在你的例子中,你只是在 int 上做一些操作,所以如果另一个分支是良构的,那么任何分支都不应该是良构的。使用它并没有什么意义。

如上所述,使用 if constexpr 除了保证编译器将删除所有其他分支之外没有任何实际优势。但我希望一个经过优化的优秀编译器也可以使用 switch 来做到这一点,因为 valfunc 被实例化时是一个常量。

我会使用 switch 语句,但那只是我。所以,选择你喜欢的。

关于c++ - "constexpr if"比 switch 语句好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44504025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com