看板 C_and_CPP 關於我們 聯絡資訊
http://ideone.com/9vpyRD 又發現VC行為比較不一樣的地方了... 這個寫法VC不給過 為什麼他會希望建構子一定要提供const &版本copy constructor的呢? 我capture的物件也不是const屬性的... 真是奇怪.... ps. 剛剛又發現 //template<class T> //Holder(T&&) //{ //cout << __FUNCSIG__ << this << endl; //} 這段如果註解拿掉, 把Holder(Holder&)給刪除 VC還是不會想走進去這template版本的建構子, 我不確定規則寫了template版本的copy constructor, compiler會不會default產生 Holder(const Holder&) 不過看來VC會, GCC不會 真怪 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.9.25.16 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481596741.A.47A.html ※ 編輯: dreamboat66 (39.9.25.16), 12/13/2016 10:39:23
ggBird: 你傳暫存物件,要用 const 去接呀 12/13 11:55
dreamboat66: 請問哪一段有產生暫存物件呢? 如果有 那是VC比較嚴 12/13 12:52
※ 編輯: dreamboat66 (39.9.25.16), 12/13/2016 12:56:00
ggBird: 少打幾個字,如果你要拷貝暫存物件,一定要 const 12/13 13:34
ggBird: 或許VC會這樣做限制,手上沒編譯器可測 12/13 13:35
dreamboat66: 但這case 並沒有temp obj的出現呀? 12/13 14:37
Caesar08: 我猜是因為如果用Holder(Holder&),lambda內仍然可以 12/13 21:35
Caesar08: 改變被copy的object(這樣就變成reference了) 12/13 21:35
Caesar08: 但是它要的是一個不會影響被copy的object的"copy" 12/13 21:35
Caesar08: 另外,關於template的部分,的確是VC有問題 12/13 21:48