lvalue-to-rvalue

    0熱度

    1回答

    在這裏的代碼類型轉換後,測試左值或右值: #include <stdio.h> template <typename T> T const f1(T const &t) { printf("T const \n"); return t; } template <typename T> T f1(T &t) { printf("T\n"); ret

    0熱度

    2回答

    這裏的網站說: http://publib.boulder.ibm.com/infocenter/macxhelp/v6v81/index.jsp?topic=%2Fcom.ibm.vacpp6m.doc%2Flanguage%2Fref%2Fclrc05lvalue.htm If an lvalue appears in a situation in which the compiler exp

    7熱度

    2回答

    class Test { public: int n1; }; Test func() { return Test(); } int main() { func() = Test(); } 這對我沒有任何意義。如何以及爲什麼這是允許的?它是不確定的行爲?如果一個函數返回一個右值,那麼如何將右值設置爲另一個右值?如果我用任何原始類型嘗試

    11熱度

    2回答

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

    6熱度

    2回答

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

    0熱度

    2回答

    最近我一直在嘗試理解移動語義並提出了一個問題。 該問題已被討論here。 我實現了第一個變種,並檢查其是否返回L值或R值: #include <iostream> using namespace std; template <typename T> T&& my_forward(T&& x) { return static_cast<T&&> (x); } int main