更多C++学习笔记,关注 wx公众号:cpp读书笔记
Item 15: Use constexpr
whenever possible
如果要给C++11颁一个“最令人困惑新词”奖,constexpr
十有八九会折桂。当用于对象上面,它本质上就是const
的加强形式,但是当它用于函数上,意思就大不相同了。有必要消除困惑,因为你绝对会用它的,特别是当你发现constexpr
“正合吾意”的时候。
从概念上来说,constexpr
表明一个值不仅仅是常量,还是编译期可知的。这个表述并不全面,因为当constexpr
被用于函数的时候,事情就有一些细微差别了。为了避免我毁了结局带来的surprise,我现在只想说,你不能假设constexpr
函数的结果是const
,也不能保证它们的(译注:返回)值是在编译期可知的。最有意思的是,这些是特性。关于constexpr
函数返回的结果不需要是const
,也不需要编译期可知这一点是良好的行为!
不过我们还是先从constexpr
对象开始说起。这些对象,实际上,和const
一样,它们是编译期可知的。(技术上来讲,它们的值在翻译期(translation)决议,所谓翻译不仅仅包含