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不是一個常量表達式時,是無法通過編譯的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26