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確實(shí)是比較難以讓人理解。加之其在C++11和14中的標(biāo)準(zhǔn)略有不同,也加劇了這種難度。
參考幾本經(jīng)典教材(C++ primer, effective modern C++, a tour of C++)以及藍(lán)色大大在知乎上的一些解答,整理出constexpr的用法和注意事項(xiàng)。
1.概念,constexpr objects
C++ primer中給出的定義是 “常量表達(dá)式是指不會(huì)改變并且在編譯過程中就能得到計(jì)算結(jié)果的表達(dá)式 【1】。”
可以理解為在const上又加一層限定條件,即const并不限定是編譯期常量還是運(yùn)行期常量,而constexpr必須是編譯期常量(在編譯階段得到結(jié)果)。
舉例如下:
眾所周知,array的size是需要在編譯期確定的,所以當(dāng)其size不是一個(gè)常量表達(dá)式時(shí),是無法通過編譯的。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26