→ Caesar08: 因為不這麼做,不能通過compile? 08/10 23:40
→ Caesar08: 可是我在MSVC跟GCC上,又都能通過compile... 08/10 23:40
→ Caesar08: 對於要convert type的unique_ptr,unique_ptr的 08/10 23:43
→ Caesar08: constructor只接受r value。所以應該是這原因導致要move 08/10 23:43
→ Caesar08: 可能是return value都會當作r value,然後能用RVO的就用 08/10 23:45
→ Caesar08: 所以就剛好可以通過編譯了吧。以上是我的猜測,請求支援 08/10 23:46
靠這篇我有推結果自己完全沒消化 Q_Q
推 EdisonX: 不推別人會以為看不懂啊! @@ 08/11 01:02
推 steve1012: 你這樣問好像有點誤導 點進去才知道unique Ptt 是個例 08/11 03:47
→ steve1012: 子 08/11 03:47
推 steve1012: 簡單來說 return 一個不match 像是要int 你return long 08/11 03:51
→ steve1012: 有可能有copy 發生 08/11 03:51
→ steve1012: 使用move 可以確保不會有copy 因爲compiler 讀到知道 08/11 03:51
→ steve1012: 不能copy 08/11 03:51
→ steve1012: 要是我想的沒有錯的話 這個應該是建議而非require 08/11 03:52
推 steve1012: 這裡提到這個的原因是因為簡單的情況下compiler 可以 08/11 03:53
→ steve1012: 自己採用move semantics 但複雜的情況 要cast的情況可 08/11 03:53
→ steve1012: 能不會 move 提供一個hint 給compiler 08/11 03:53
推 steve1012: Int long 的例子不太好 可能要user defined type 比較 08/11 04:48
→ steve1012: 好 08/11 04:48
→ Caesar08: 可是unique_ptr不能copy,long轉int不能適用 08/11 13:34
推 steve1012: 早上沒看推文xd 看來我誤解了 08/11 14:21
推 steve1012: 一樓都講完了 會摳move constrictor 08/11 14:26
等等一樓講完了嗎我還不明白啊 Q_Q
推 bluesoul: 你應該先搞懂move semantics 08/12 20:11
最近一直在看相關的資料,包括yoco那篇文
但我發現自己連"會不會產生暫時物件"都有點分不清楚orz
繼續唸書.......
推 druid0214: 推薦看effective modern C++ 去理解C++11 08/12 21:34
感謝!!!!
※ 編輯: james732 (223.137.25.206), 08/12/2016 22:24:51
→ Caesar08: 我發現這後面有很大的議題... 08/13 21:33