返回信息流typedef function<double(int a,int b)>test_function;
test_function build_function(double c,double d){
return[&c,&d](int a,int b){
return (a+c)/(b+d);
}
请问为什么上面按引用捕获,函数内得到的c和d的值是错误的?按值捕获就对了。。。
这是一条镜像帖。来源:北邮人论坛 / cpp / #86324同步于 2015/4/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]关于lamda表达式
ridicucredi
2015/4/2镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
因为c和d的内存空间在build_function返回之后就被破坏了,因此这两个引用也变得非法了。(我不是很自信,等我有机会滚回去再读读C++11的标准……
哦,,那捕获什么时候用呢,,形参得是引用?
【 在 nuanyangyang 的大作中提到: 】
: 因为c和d的内存空间在build_function返回之后就被破坏了,因此这两个引用也变得非法了。(我不是很自信,等我有机会滚回去再读读C++11的标准……
【 在 ridicucredi 的大作中提到: 】
: 哦,,我说错了,,我是想问,,那什么时候按引用捕获。。。
如果你确定被引用的存储空间在这个lambda被调用的时候还有效,就可以。
哦, 了解了。。
【 在 nuanyangyang 的大作中提到: 】
:
: 如果你确定被引用的存储空间在这个lambda被调用的时候还有效,就可以。