Scott Meyers在effective modern c++中提到“If there were an award for the most confusing new word in C++11, constexpr would probably win it.”

由此可见,constexpr确实是比较难以让人理解。加之其在C++11和14中的标准略有不同,也加剧了这种难度。

参考几本经典教材(C++ primer, effective modern C++, a tour of C++)以及蓝色大大在知乎上的一些解答,整理出constexpr的用法和注意事项。

1.概念,constexpr objects

C++ primer中给出的定义是 “常量表达式是指不会改变并且在编译过程中就能得到计算结果的表达式 【1】。”

可以理解为在const上又加一层限定条件,即const并不限定是编译期常量还是运行期常量,而constexpr必须是编译期常量(在编译阶段得到结果)

举例如下:

众所周知,array的size是需要在编译期确定的,所以当其size不是一个常量表达式时,是无法通过编译的。

        		

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式