Re: [問題] lambda capture list 的問題

作者: dreamboat66 (小嫩)   2016-12-13 10:38:54
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不會
真怪
作者: ggBird (ggBird)   2016-12-13 11:55:00
你傳暫存物件,要用 const 去接呀
作者: dreamboat66 (小嫩)   2016-12-13 12:52:00
請問哪一段有產生暫存物件呢? 如果有 那是VC比較嚴
作者: ggBird (ggBird)   2016-12-13 13:34:00
少打幾個字,如果你要拷貝暫存物件,一定要 const或許VC會這樣做限制,手上沒編譯器可測
作者: dreamboat66 (小嫩)   2016-12-13 14:37:00
但這case 並沒有temp obj的出現呀?
作者: Caesar08 (Caesar)   2016-12-13 21:35:00
我猜是因為如果用Holder(Holder&),lambda內仍然可以改變被copy的object(這樣就變成reference了)但是它要的是一個不會影響被copy的object的"copy"另外,關於template的部分,的確是VC有問題

Links booklink

Contact Us: admin [ a t ] ucptt.com