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