作者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/cn.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