vgvassilev 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?

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