fogsong233 wrote:

> > > I am a bit confused, if the lambda is on the global scope it implicitly 
> > > captures by reference, right: 
> > > [https://godbolt.org/z/rM1z1xfjq我有点困惑,如果](https://godbolt.org/z/rM1z1xfjq%E6%88%91%E6%9C%89%E7%82%B9%E5%9B%B0%E6%83%91%EF%BC%8C%E5%A6%82%E6%9E%9C)
> > >  lambda 在全局作用域中,它会隐式地按引用捕获,对吧:https://godbolt.org/z/rM1z1xfjq
> > > In that sense I'd think the diagnostic is correct, 
> > > right?从这个角度来看,我认为诊断是正确的,对吧?
> > 
> > 
> > It really depends on how clang-repl defines its execution context. 
> > Intuitively, we feel like we are working within a function scope (like 
> > main), so we unconsciously reach for [&] or [&variable] to capture 
> > surrounding state. However, technically, clang-repl treats these variables 
> > as globals to ensure persistence, meaning we can access them directly 
> > without any capture. The diagnostic, therefore, reflects this 
> > implementation choice: we perceive it as a local context, but the tool 
> > defines it as global. So should user see variable in the top level of repl 
> > the same kind like some variable in a function context?
> 
> I believe it should behave in the same way as if we are working on the global 
> scope. For example `auto capture = [&]() { return x * 2; };` has little to do 
> with executing statements on the global scope. I'd say this issue is invalid 
> as what clang-repl displays is exactly what compiled c++ does. I think we 
> should close the issue with "won't fix" and clarify this there. What do you 
> think?

Fine.

https://github.com/llvm/llvm-project/pull/178579
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to