Re: [问题] lambda capture list 的问题

楼主: dreamboat66 (小嫩)   2016-10-30 11:05:39
谢谢L大解惑
但我还是有观念不太明白
explicit是我故意写上去想确认观念
1. 光写 [f2] 这样 , "f2 继承自它抓取的变量的常数性" 这是规则噜?
所以他并不是[f2=f2] 也不是[f2(f2)] 而是compiler内部自己会想办法复制
(会说想办法是因为我自己无法复制, 问题二)?
2. http://ideone.com/JzEnVF
因为我刻意写explicit, 我预期他[f4=f3] 会不给过 [f4(f3)] 会给过
但结论他的error code都一样
为什么他规则会是这样?
那不就变成我根本无法capture by value 一个copy cstr 写explicit的物件吗?
谢谢
作者: LPH66 (-6.2598534e+18f)   2016-10-30 12:11:00
1. 这个是我回文里那个连结提到的, 我不确定标准是不是这样2. [f4=f3] 或 [f4(f3)] 这种带初始化的 capture会如上所言当做有个 auto 在那里, 那这就跟一般变量宣告和初始化一样; 同样的 class 你也无法使用这种方式喔, 仔细看了一下, f4(f3) 理论上要给过, 这我要看看..嗯, 我想了一下应该是不行, 这里理论上还是隐式复制因为你借由宣告 lambda 把一个外面的物件给隐式复制到lambda class 里面去了, 这个复制是隐式的所以会被 explicit 挡掉; 话说回来, 现在好像也没有explicit copy ctor 的用途了所以...1. 回头看了连结, 这是标准规定无误; 里面有引用了标准原文
楼主: dreamboat66 (小嫩)   2016-10-30 15:21:00
[f4(f3)]我发现VC是给过的... 为什么你会说是隐式复制呢? 他不是类似cstr(): f4(f3) {} 这样吗?你意思是cstr(Foo f3这边是copy):f4(f3)这边又一次?如果是capture by value 实际上不是只有copy一次吗?为什么建构子会想用value去接@@顺便问一下explict copy cstr以前用途是什么?淘汰了?感觉是禁止当参数传递 进出function?
作者: LPH66 (-6.2598534e+18f)   2016-10-30 16:47:00
这里其实我并不大确定到底是怎么回事cppreference 只有说这里等同于一个 auto 卡在它前面但实际上是怎样似乎还是得去研究一下标准才有可能理清
楼主: dreamboat66 (小嫩)   2016-10-30 17:16:00
谢谢 问一下你们会提到的标准 是要用钱买吗? 我只会google看cppreference
作者: CoNsTaR ((const *))   2016-10-30 17:37:00
有 draft 可以看
作者: Caesar08 (Caesar)   2016-10-30 20:12:00
google "iso c++" 然后就可以看到左边有working draft
作者: wtchen (没有存在感的人)   2016-10-30 20:17:00
精华区有working draft的连结

Links booklink

Contact Us: admin [ a t ] ucptt.com