這基本上是有關DR 712的my prior question的延續。讓我先解釋一下爲什麼我堅持要看一些可能被認爲是舊的東西,如C++ 11標準,但我的問題是[C++ 11]中的[basic.def.odr]這部分已經很難理解了,在我深入研究當前草案中的同一部分之前,我想完整地介紹這一部分,在我看來,更加複雜。繼續「我只是不明白DR 712」
對我之前問題Austing Hasting的回答很好,但我仍然有一點在C++ 11的[basic.def.odr]/2中不明確。考慮這一點,非常簡單的例子:
const int i = 1;
int main()
{
int j = i;
}
從[basic.def.odr]/2在C++ 11 i
是不odr-used
在int j = i;
作爲i
是滿足對於出現在要求的對象一個常數表達式和左值到右值的轉換立即應用於i
。這對我來說沒有多大意義,因爲i
明確地用於聲明int j = i;
,正如可以在稍微修改的代碼here中看到的那樣,其中我強制變量i
不在編譯代碼之外進行優化。
當然,我上面的推理肯定有錯,因爲我不相信C++ 11在這樣一個簡單的例子中可能是錯的。再次,我現在想念什麼?
您的示例代碼中所需的全部內容都是***「i」的值***。這意味着它可以被優化,並且不需要分配存儲空間。 –