项目场景:
C++中if else语句优化问题
问题描述
我们正常使用if else语句的时候,在编译期会同时编译出if后面的语句以及else后面的语句,降低编译效率。这时引入if constexpr
bool vaule=ture;
auto fun()
{
if(vaule) return 1;
else return 3.14;
}
int main()
{
}
原因分析:
这时程序会报错,因为返回类型的自动推导auto fun()会蒙蔽,为啥返回值里既有int型又有double型
解决方案:
但如果用if constexpr则完全不同
constexpr bool vaule=ture;
auto fun()
{
if constexpr(vaule) return 1;
else return 3.14;
}
int main()
{
}
此时编译器只会编译 if constexpr(vaule) return 1;因为在编译期就可以确定执行if constexpr语句,else语句在编译期直接被忽略。所以既解决了返回类型自动推导问题,也加快了编译效率.
个人认为这个东西最牛的地方相当于在编译期干了运行期的事,从而引入了优化。