2015-12-01 108 views
0

我昨天看到了有關左值的答案,下面就是它的內容:參考本身是一個左值?

- 左值(所謂的歷史上,因爲左值可能出現在 賦值表達式的左側)指定的函數 或一個對象。 [例如:如果E是指針類型的表達式,則E是指向E指向的對象或函數的左值表達式。作爲另一個例子,調用返回類型爲左值引用的函數 的結果是左值。 - 例]

所以一個問題出來了:是參考本身是一個左值? 我知道左值引用和右值引用都可以出現在賦值表達式的左側,但引用既不是函數也不是對象,是否存在矛盾?和參考真的是一個左值? 此外,如果參照是一個左值,什麼是decltype的類型(參考表達式),例如:

int main (void) { int a = 1; int &b = a; decltype((b)) c; } 

什麼C的類型?

回答

0

在您的代碼中,表達式b是一個左值,類型爲int

c的聲明與int &c相同。 (所以它不合格,因爲你沒有提供初始化)。如果您確實提供了初始值設定項,則表達式c是類型爲int的左值。