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中的標準略有不同,也加劇了這種難度。

參考幾本經(jīng)典教材(C++ primer, effective modern C++, a tour of C++)以及藍色大大在知乎上的一些解答,整理出constexpr的用法和注意事項。

1.概念,constexpr objects

C++ primer中給出的定義是 “常量表達式是指不會改變并且在編譯過程中就能得到計算結(jié)果的表達式 【1】?!?/p>

可以理解為在const上又加一層限定條件,即const并不限定是編譯期常量還是運行期常量,而constexpr必須是編譯期常量(在編譯階段得到結(jié)果)

舉例如下:

眾所周知,array的size是需要在編譯期確定的,所以當其size不是一個常量表達式時,是無法通過編譯的。

        		

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式