→ nh60211as: 是不是還有Copy elision要考慮,我現在沒辦法測試 04/09 17:30
→ DeepFapping: 臥槽,剛查了一下,我沒學過這東西,所以這是編譯器 04/09 17:47
→ DeepFapping: 優化的問題,設中斷點也看不到的結果,不知遇到這種 04/09 17:47
→ DeepFapping: 問題要如何學習?感謝。以試過,g++結果跟Visual C 04/09 17:47
→ DeepFapping: ++一樣了,但是仍然跟我想的不一樣= =" 04/09 17:47
→ Lipraxde: 先從怎麼把所有相關的優化關掉開始學 04/09 18:08
推 s4300026: 左邊的啊 04/09 18:29
推 g0010726: 樓樓上說的關掉優化在c++17後應該也沒用了 有些rvo變成 04/10 06:30
→ g0010726: 強制的 規則可以在cppreference翻一下 04/10 06:30
→ g0010726: 抱歉 應該說 copy elision 比較準確 04/10 06:31
→ Lipraxde: 是嗎?我有點忘記以前試的時候是不是用 c++17 了。 04/10 13:53
→ a27417332: Copy Elision或RVO發生的時候根本連Move都不會有 04/10 19:24
→ a27417332: 另外,右值引用通常是不會加const的,跟初衷矛盾 04/10 19:28
→ a27417332: 第一個分隔線前的Deep Copy實際上也沒複製到member, 04/10 19:30
→ a27417332: 但你好像期待他會輸出解構a? 04/10 19:30
→ hunandy14: 應該單純只是兩家的 複製省略 策略不同而已 04/20 12:31
推 MartinJ40: 優化條件不一樣阿 vs開用release跑就變右邊 04/20 15:21
→ MartinJ40: 沒有不一樣阿 04/20 15:23
→ MartinJ40: function return會變成move所以不要在return call move 04/20 15:27
→ MartinJ40: effective modern c++有寫 所以右邊是正確的 04/20 15:28
→ MartinJ40: 抱歉不是move 是copy elision 04/20 15:33
→ MartinJ40: 編譯器的實作是c會就地變成reference指向RVO 04/20 15:33
→ MartinJ40: rvo生命週期就變成c的生命週期 04/20 15:34
→ MartinJ40: 推 g0010726: 樓樓上說的關掉優化在c++17後應該也沒用 04/20 15:43
→ MartinJ40: 跟優化無關 04/20 15:43