在this conference,斯科特邁耶斯開始說「左值通常是表達式,你可以採取的地址」。我一般強調這個詞:什麼是你不能接受的地位? (如果存在)。地址不能被接受是什麼樣的左值?
編輯: 請提供您的答案代碼片段,它使事情更清晰。
在this conference,斯科特邁耶斯開始說「左值通常是表達式,你可以採取的地址」。我一般強調這個詞:什麼是你不能接受的地位? (如果存在)。地址不能被接受是什麼樣的左值?
編輯: 請提供您的答案代碼片段,它使事情更清晰。
我認爲bitfields滿足你的條件...我相信f.x
是一個左值,但你不能把它的地址。有趣的是,你也不能這樣做auto & x = f.x
。
C++ 11第8.3.1節部分第4段組成:由於位字段(9.6)的地址不能採取,指針不能指向一個位字段。
struct foo {
int x : 3;
int y : 3;
int z : 3;
};
int main() {
foo f;
f.x = 3;
}
我甚至不太確定這個其他的想法,但標準說,你不準使用的主要功能。如果採用main的地址來使用它,那麼這也足夠了。 C++ 11 3.6.1第5段
而從評論我離開了,我知道,TI延長他們的C和C++編譯器,有一個名爲cregister
存儲類,你不能拿的地址。 (因爲它指的是一個沒有地址概念的物理寄存器)。
您可以從命名符號(例如與臨時實例)中獲取地址。就我理解這個解釋而言,這就是構成一個左值。
您是否在您的標題中指** ** lvalues **? –
yea o.O不敢相信我寫了右值 – qdii
我沒有進入完整的會議視頻,但看看周圍的文字我想S.M.這裏真的是在討論'rvalues'。關於你的問題,我發現的最相關的東西似乎可以在這裏找到:(http://thbecker.net/articles/rvalue_references/section_05.html) –