2
鑑於static const char * const x = "test";
和帶有簽名void DoSomething(std::string && value)
的函數,爲什麼將此左值與參數DoSomething(x);
這樣的參數綁定是合法的?爲什麼靜態const char * const變量在左值時可以綁定到右值引用參數?
我的印象是字符串文字是一個字符數組,但它衰減到指針類型,仍然是一個左值。我只是困惑爲什麼這是合法的。
當帶有右值引用參數的函數期望獲取參數數據的所有權時,它如何在PE文件的只讀段中對內存起作用?我知道內存並沒有被移動,但似乎會造成問題。
啊,這是一個很好的解釋。它並沒有跨越我的想法,它會創造一個暫時的。所以,我們並沒有真正地綁定'const char *',而是在轉換到'std :: string'的過程中創建的臨時對象。 –
@ MichaelJ.Gray這是正確的。 – InternetAussie