字面值類型

常量表達式的值需要在編譯時就得到計算,因此對聲明constexpr時用到的類型必須有所限制。因為這些類型一般比較簡單,值也顯而易見、容易得到,就把它們稱為“字面值類型”(literal type)。

算術類型、引用和指針都屬於字面值類型。某些類也是字面值類型,它們可能含有constexpr函式成員。自定義類Sales_item、IO庫、string類型不屬於字面值類型。

儘管指針和引用可以定義成constexpr,但它們的初始值受到嚴格限制。一個constexpr指針的初始值必須是nullptr、0或存儲於某個固定地址中的對象。

函式體內定義的變數一般來說並非存放在固定地址中,因此constexpr指針不能指向這樣的變數。定義於函式體外的對象其地址固定不變,能用來初始化constexpr指針。允許函式定義一類有效範圍超出函式本身的變數,如局部靜態變數,這類變數和定義在函式體之外的變數一樣有固定地址,因此constexpr引用能綁定到這樣的變數上,constexpr指針也能指向這樣的變數。

相關詞條

熱門詞條

聯絡我們