[問題] VC建構行為與GCC不一樣

看板C_and_CPP作者 (小嫩)時間9年前 (2016/10/14 21:22), 編輯推噓2(206)
留言8則, 2人參與, 最新討論串1/1
問題(Question): 為什麼這段code 在VS 2015跑的時候 完全不會跑到這個Foo(T&&...) 建構子 然後我百思不得其解的時候把 Foo() = default 改成 Foo(){} 就跑了? 1. 如果沒跑 那他跑什麼? 2. Foo(){} 不等於 Foo() = default嗎??? 謝謝 預期的正確結果(Expected Output): 如ideone 的結果一樣 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/W26q8L -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 27.242.160.186 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1476451330.A.F2F.html

10/15 00:28, , 1F
我猜這跟 copy elision 有關: 標準規定在某些狀況下
10/15 00:28, 1F

10/15 00:29, , 2F
呃等等, 先忽略我的話...這跟 copy elision 好像無關
10/15 00:29, 2F

10/15 00:37, , 3F
我在我的 VC2013 上試會出 C2580, google 了一下有人說
10/15 00:37, 3F

10/15 00:37, , 4F
這個似乎是 VC 的 bug 但已經修掉
10/15 00:37, 4F

10/15 00:37, , 5F

10/15 00:38, , 6F
但這跟你的問題好像又有點無關...
10/15 00:38, 6F

10/15 00:48, , 7F
幫你把問題再精簡一下 http://ideone.com/iIDDds
10/15 00:48, 7F

10/15 00:49, , 8F
這是VC的bug,但我也不知道是怎麼引發這問題的
10/15 00:49, 8F
文章代碼(AID): #1O0Dm2yl (C_and_CPP)