rvalue

    1熱度

    2回答

    可能重複: lvalue and rvalue difference between c's expression and c++'s expression 上執行下面的程序中,我得到了錯誤的信息,如「需要左值中缺少主要功能「 main() { int i; printf("%d",++i++); } 請告訴我什麼是右值和左值。 如果有這種類型的其他值,請解釋一下。

    11熱度

    2回答

    C++ 03§4.2N°1: 左值或類型的右值「陣列NT的」或「的陣列T的未知邊界「可以轉換爲類型爲」指向T的指針「的右值。結果是指向數組的第一個元素的指針。 很長時間以來,我一直在困惑的是,我並不完全理解數組類型的右值意味着什麼。也就是說,我無法想出一個表達式,其類型是一個數組,結果是一個右值。我讀this線程,它基本上提出相同的問題,並且接受的答案是「不,數組類型不存在右值」。我想我可能會對此

    28熱度

    3回答

    請考慮下面的內容。 #include <string> using std::string; string middle_name() { return "Jaan"; } int main() { string&& danger = middle_name(); // ?! return 0; } 這不計算任何東西,但它編譯沒有錯誤,並表明我感到

    0熱度

    1回答

    我有一個關於移動構造函數的性能問題,僞C++類: typedef tuple<std::string, std::vector<double>, ...and more...> FooTupleMember; class Foo1 { public: Foo1::Foo1 (Foo1&& object) : member (std::move (objec

    0熱度

    1回答

    C++ 03 $ 14.1/6 - 「一種非型 非參考模板參數是 不是左值」 C++ 0x $ 14.2/6-「非類型 非參考模板參數是 右值。」 是否有任何具體的理由背後重新呢?

    6熱度

    2回答

    我一直在網上閱讀很多人,似乎很多人提到了下面的規則(但我在標準中找不到它), 加法運算符+(和所有其他二元運算符)要求兩個操作數都是右值,結果是右值。 等等.. 我檢查C++標準,它明確指出(第3.10/2), 每當glvalue出現在 上下文其中prvalue預計, 的glvalue被轉換爲prvalue (第5/9), 每當glvalue表達似乎 作爲操作者的操作數 預計,該操作數一prval

    0熱度

    3回答

    我已經從超過1 struct Data { std :: vector <int> data; Data() { data .push_back (1); }; Data (Data && d) : data (std :: move (d .data)) {} }; Data && foo() { Data d; return std :: move (d);

    11熱度

    2回答

    請問,有人可以用簡單的英語解釋什麼是「將移動語義擴展到* this」? I am referring to this proposal。所有我在尋找的是什麼是& 爲什麼我們需要那個。請注意,我確實瞭解通常的右​​值引用是什麼,移動語義是在哪個基礎上構建的。我無法理解這樣的擴展對rvalue引用的影響!

    11熱度

    2回答

    的ISO/IEC 14882, Programming language – C++廣泛閱讀後我爲什麼需要const隱式轉換爲用戶定義的類型與單個參數的構造類似於下面 #include <iostream> class X { public: X(int value) { printf("constructor initialized with %i",value);

    26熱度

    3回答

    在C++中,預增值運算符會給出左值,因爲返回的是增量對象本身,而不是副本。 但在C中,它給出了右值。爲什麼?