2011-09-29 81 views
2

根據C++標準2003:數組或函數左值可以轉換爲右值嗎?

An lvalue (3.10) of a non-function, non-array type T can be converted to an rvalue. 

是什麼意思數組和功能不能被轉換爲右值?

+1

我甚至不知道函數或數組類型的左值是什麼樣子,假設它甚至存在。 – Neil

+0

@Neil:數組類型的左值只是一個表示數組對象的表達式。給定'int arr [20];',表達式'arr'是一個數組左值。 (它在大多數情況下轉換爲指針,但不是全部情況。) –

+0

@KeithThompson CatPlusPlus的回答很清楚,謝謝。 – Neil

回答

5

函數和數組類型都被後面的子句(4.2,4.3)所覆蓋。

左值或類型「數組NT的」或「結合的T未知的數組」的右值可以被轉換爲一個右值類型的 「指針T.」結果是一個指向第一個元素的陣列。

(...)

功能類型T的左值可以轉換爲類型「指針T.」的右值的結果是一個指針,指向 功能。