允許聲明一個非const引用爲constexpr
?示例代碼:constexpr對非const對象的引用
int x = 1;
constexpr int& r = x;
這是通過gcc和鐺接受(我試圖兩者的幾個當前和過去的版本,回到C++ 11,和所有接受了它)。然而,我認爲它不應該被接受,因爲C++ 14 [dcl.constexpr/9]表示:
如果constexpr說明符以引用聲明使用,則出現在其初始值設定每全 表達應是一個常量表達式
和x
不是一個常量表達式。
[dcl.constexpr]的最新C++ 17草案中的語言發生了變化,甚至沒有提及明確引用constexpr
,我無法對它們進行說明。
誰說'x'不是一個常量表達式? –
「'x'不是核心常量表達式」{{引用需要}} –
@ T.C。 [expr.const]/2「e」是一個核心常量表達式,除非[e]的評估會評估以下值之一:左值到右值的轉換,除非它適用於[例子這個代碼不匹配]「 –