dhaumann added inline comments.

INLINE COMMENTS

> kossebau wrote in plugin.cpp:196
> Confirmed by experiments. Still not yet found a document where explicitly it 
> is mentioned that the copy constructor will be invoked to generate a copy of 
> the object for any captured variables only being of type reference, so if 
> anyone can point out one which reads this clearly to me, happy to get a 
> reference to, so I can try to do a copy of that referenced document into my 
> brain lambda :)

Understanding captures becomes simple as soon as you follow what the compiler 
essentially does for you with the lambda:
The lambda function does not capture `[this]`, so behind the scenes the 
compiler will create for you a free function (with an internal unique function 
name). This free function will have a local const variable "library". If you 
write [library] than this local variable will simply be a copy (think of the 
definition `const QString library = library_from_outer_scope;`. When you write 
`[&library]` instead, you will get a `const QString &library = 
library_from_outer_scope;`. Does that clarify when to use `&` or not? :-)

PS: If you capture `[this]`, then the compiler will not a create a free 
function, instead the compiler will create a member function for you (again 
with internal unique name ....).

Looking at lambda functions from this perspective makes this rather simple.

REPOSITORY
  R306 KParts

REVISION DETAIL
  https://phabricator.kde.org/D24262

To: kossebau, dfaure
Cc: dhaumann, kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns

Reply via email to