作者dreamboat66 (小嫩)
看板C_and_CPP
標題Re: [問題] lambda capture list 的問題
時間Tue Dec 13 10:38:54 2016
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1481596741.A.47A.html
※ 編輯: dreamboat66 (39.9.25.16), 12/13/2016 10:39:23
1F:→ ggBird: 你傳暫存物件,要用 const 去接呀 12/13 11:55
2F:→ dreamboat66: 請問哪一段有產生暫存物件呢? 如果有 那是VC比較嚴 12/13 12:52
※ 編輯: dreamboat66 (39.9.25.16), 12/13/2016 12:56:00
3F:→ ggBird: 少打幾個字,如果你要拷貝暫存物件,一定要 const 12/13 13:34
4F:→ ggBird: 或許VC會這樣做限制,手上沒編譯器可測 12/13 13:35
5F:→ dreamboat66: 但這case 並沒有temp obj的出現呀? 12/13 14:37
6F:→ Caesar08: 我猜是因為如果用Holder(Holder&),lambda內仍然可以 12/13 21:35
7F:→ Caesar08: 改變被copy的object(這樣就變成reference了) 12/13 21:35
8F:→ Caesar08: 但是它要的是一個不會影響被copy的object的"copy" 12/13 21:35
9F:→ Caesar08: 另外,關於template的部分,的確是VC有問題 12/13 21:48