根據@Patatoswatter的建議,我創建了一個新的討論。參考表達式的評估
參考是從@Potatoswatter
this response考慮的代碼片段,
int i = 3, &j = i;
j = ++ i;
即我謀上清晰的註釋,是這樣的。 (這似乎是在我的未測序評價a.k.a序列點的理解的重要缺失的那一塊):
@Chubsdad:儘管這是一個別名, 其glvalue評價不 需要我的glvalue評價。 一般而言,評估 參考不需要原始對象在手。有 沒理由它應該是UB,所以它使得 感覺應該有一個簡單的漏洞 或者轉化爲不是 的UB代碼。
和
參考不告訴 編譯器去看看引用 變量,並得到其左值,因爲它 可能不知道什麼是變量引用 。編譯器計算引用的左值,並且左值標識對象。如果您要 想進一步辯論,請 開個新問題。
在這個問題的任何可能缺乏明確的是「不確定的行爲」我通過努力理解「未測序的評價」,「序列點」會的一部分等C++ 0x中。
只是爲了修補第一個陳述,「手頭上」的意思是「靜態確定」。通過「轉換爲不是UB的代碼」,我的意思是將由於對lvalue對象的副作用而產生的UB代碼進行處理,其隨後不被評估爲rvalues,例如'i = ++ i',並將引用變量'j'在這裏)複製這樣的左值,所以它們的評估不會受名義上的副作用的影響。 – Potatoswatter 2010-10-06 13:18:27