→ lovejomi: 但我無法解釋為什麼 不return move就會變成走copy 08/01 00:41
→ lovejomi: 一直認為return 是一個獨特的存在 感覺有不知道的規則. 08/01 00:46
推 KaryuuIssen: 就算是右值參照綁定也是左值 所以要用move轉回右值 08/01 01:33
→ KaryuuIssen: 才能實現移動語義 不知道你的問題是不是這個 08/01 01:33
→ loveme00835: zzz 希望你能有系統地學一個語言, 不是網路上東拼西 08/01 01:52
→ loveme00835: 湊, 然後回答了你也吸收不了 08/01 01:52
→ lovejomi: @Kar:我的問題不是這個,是一般return xxx; by value就 08/01 09:54
→ lovejomi: 會走move不需要刻意去std move轉型, 但為什麼這種&&的要 08/01 09:54
→ lovejomi: 特別用move才會變成走move呢(我知道他有名字是左值)? 08/01 09:54
→ lovejomi: 想了解細節 謝謝 08/01 09:54
推 eye5002003: 從boost的使用規畫去想就可以理解它在做什麼了,通常 08/01 10:36
→ eye5002003: 像c=a/b這種算式是不會去修改a跟b的數據,它們只參與而 08/01 10:38
→ eye5002003: 以,然而當你這麼寫的時候c=std::move(a)/b就是允許編 08/01 10:40
→ eye5002003: 譯器拿a的資源來用了,return那邊不寫move的話會建立一 08/01 10:44
→ eye5002003: 個新的副本,這樣使用者寫的move就失去意義了 08/01 10:46
→ lovejomi: 我好像意識到 平常不寫move是因為受惠於nrvo...但這樣 08/01 10:51
→ lovejomi: 讓我不解 想要nrvo又inline 是怕說inline失敗還有nrvo 08/01 10:51
→ lovejomi: 嗎 08/01 10:51
推 KaryuuIssen: 上上面問題 因為&& lhs是外來的輸入引數 無法NRVO 08/01 15:13
→ KaryuuIssen: 當然能inline最好 NRVO所搞的優化 inline何嘗不可 08/01 15:14
→ hunandy14: 我有注意到你更改後的把 path&& 改為 path 了 08/01 17:35
→ hunandy14: 改回來原本 $$ 你不用 std::move 是不合法的 08/01 17:36
→ hunandy14: 阿 不是你改的~沒注意看 08/01 17:39
→ Lipraxde: inline 不是因為它放在 header 裡嗎 08/01 18:51
→ loveme00835: 會跟 inline 混淆表示你根本不知道你在問什麼, move 08/01 19:54
→ loveme00835: 的作用就是轉型, 這會決定哪個版本的建構子會被叫起 08/01 19:54
→ loveme00835: 來, 而會不會最終會被 optimize 掉, 則是取決你的函 08/01 19:54
→ loveme00835: 式內容, 不是 return statement. 你每篇問題都是看到 08/01 19:54
→ loveme00835: 一個 feature 就問, 但是最簡單的像 move 你就理解錯 08/01 19:54
→ loveme00835: 誤, 其實後面也不用問了 08/01 19:54
→ loveme00835: 直接跟你說 C++17 以前, 談 RVO 都是 implementation 08/01 19:55
→ loveme00835: defined 所以先知道自己問題的 scope 別人才有辦法 08/01 19:55
→ loveme00835: 回答你 08/01 19:55
推 ofd168: 推樓上好心大神 08/08 02:18