当前位置:C++技术网 > 资讯 > 关于constexpr的使用问题

关于constexpr的使用问题

更新时间:2016-08-16 14:25:43浏览次数:1+次

C++11提出了constexpr的概念

然而似乎觉得在大多数情况下都可以使用const进行同样的工作,那他存在的意义是什么?

望解答


C++技术网解答:

这个问题,主要是const有缺陷,以及限制太严格导致了constexpr的产生。

原因列举:

1. 因为本身语法是确定为常量初始化,然后初始化表达式却在编译时无法确定值。

2.对于返回常量的函数无法直接支持常量初始化,让常量初始化变得麻烦。

    因为const的不足,也就催生了constexpr的出现。不过,constexpr本身也有问题,现在争议也比较大。

    更详细的,可以参考下面这个文章《C++ 0x 即将夭折的新关键字 constexpr 为 VS 2010 拒绝》。经过仔细的阅读,发现写的不错,能够很好的解答你的问题。就引用作为你的解答了。

    当然,这是从语法上的单纯的考虑,学习时可以了解一下。在实际开发中,建议使用编译器支持更多的关键词,像constexpr就不被VS2010支持。所以在代码的维护也是不好的。既然你觉得你的开发中,const足矣,那就可以了,就用const好了。至于const和constexpr的争议和问题,就交给编译器开发者去支持实现。在我们的项目中,尽可能使用安全的关键字,那些存在争议,不稳定的关键词,尽量少的用于项目中,除非是没有其他可行的方法了。