Hum*_*awi 13 c++ lambda c++11 dangling-pointer
我有一个内部lambda使用外部lambda的一个引用变量,如下所示:
int x=0;
auto outer=[&](){
return [&](){
x=5;
};
};
auto inner= outer();
inner();
std::cout << x;
Run Code Online (Sandbox Code Playgroud)
我试了一下.它运作良好.但是,我想确保这里没有悬空参考.在那儿?
eer*_*ika 15
这里没有悬空参考.内部lambda的引用不是对引用的引用(没有这样的东西); 它指的是x- 当然没有超出范围.
如图所示,您在x声明的块范围内调用lambda ,并且没有悬空引用.
值得注意的是,内部匿名lambda x直接从最外面的块范围捕获引用,而不是从外部lambda 捕获引用,因为它正在寻找声明.
如果将lambda对象的(副本)传递到该块作用域之外,则可以引起悬空引用.
| 归档时间: |
|
| 查看次数: |
1440 次 |
| 最近记录: |