[問題] 巢狀 Universal Reference

看板C_and_CPP作者 (LoyalDog)時間10年前 (2016/01/28 19:47), 10年前編輯推噓5(509)
留言14則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2013 問題(Question): 如程式碼,因為使用者傳入的參數會經過三層的處理,所以三個function都要用 universal Reference的版本,否則六個函式中有三個是重覆的Code。 結果就是編譯失敗...然而看不懂失敗的訊息... (參數A不能轉為參數B&&) 底下呼叫的是Universal Reference的Function,Template不是應該會產生 rvalue reference的版本,然後overload resolution會選擇到那個版本嗎? 還是我哪裡理解錯誤呢? Orz 謝謝! 程式碼(Code):(請善用置底文網頁, 記得排版) http://ideone.com/UQEChO -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.8.232 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1453981626.A.59C.html

01/28 19:53, , 1F
你這code有好多問題可以挑...
01/28 19:53, 1F

01/28 19:56, , 2F
要用 univ. ref. 請把 std::move std::forward 搞懂
01/28 19:56, 2F

01/28 19:56, , 3F
不然你傳一傳 rvalue 性就不見了
01/28 19:56, 3F

01/28 19:57, , 4F
講一個很多人覺得沒差的,既然你寫C++ code
01/28 19:57, 4F

01/28 19:58, , 5F
main不要寫int main(void),請寫int main()
01/28 19:58, 5F
!! 以前學到傳void就一直這樣寫...原來那樣是C限定的 Orz 謝謝指教

01/28 19:58, , 6F
Universal Reference 是 T&& 不是 const T&&
01/28 19:58, 6F

01/28 19:58, , 7F
還有const要拿掉,只留下T &&
01/28 19:58, 7F

01/28 19:59, , 8F
版友 dorgonman 的 #1MaeA83g 可以仔細研讀一番
01/28 19:59, 8F

01/28 19:59, , 9F
最後,你的test2沒有forward declaration
01/28 19:59, 9F
厄..這個...對不起 Orz 打個Sample Code沒有仔細Check Orz

01/28 20:01, , 10F
我覺得yoco315的翻譯 #19gioP8j 比他的好
01/28 20:01, 10F
看來我完全沒理解就在亂用了Orz 另外一篇比較長..我慢慢收著看。 ※ 編輯: lovesnake (61.70.250.188), 01/28/2016 21:05:28

01/29 00:26, , 11F
謝謝
01/29 00:26, 11F

01/29 00:42, , 12F
正妹工程師出沒 <(_ _)>
01/29 00:42, 12F

01/29 11:43, , 13F
只能推正妹了~~
01/29 11:43, 13F

01/31 17:09, , 14F
正咩朝聖
01/31 17:09, 14F
文章代碼(AID): #1MgV-wMS (C_and_CPP)