On Monday, 29 May 2017 at 21:26:11 UTC, MakersF wrote:
1) Capture by value. This is the ability to have a lambda which behaves as expected in the example Vittorio showed
That's a known bug in the implementation; it is supposed to work that way now.
(Though the bug has been open for so long I treat it as intended and tell people how to work with it, it isn't actually what the design says.)
1) The lambda is not compatible with a delegate anymore 2) There need to be a special notation for reference capture
That's true, but that's the whole point of the new thing. The auto-generated struct btw can be converted to a delegate with `&obj.opCall` or copied into a manually allocated buffer with `memcpy(buffer, &obj, obj.sizeof)`, just like the manually written struct to do the same. (and might have convenience methods, e.g. toDelegate and copyInto, to do these things too).
- if capture is provided, then the lambda is rewritten as a struct, which the explicit variables in the capture list being captured by value, and the remaining being captured by reference (so there would still be implicit capture, which is considered convenient in many programming languages).
Eh, if you do any explicit, I think it should be ALL explicit. There's value in the simple proposals to syntax rewrite into a struct... but going beyond that I think is a negative and should not be in this proposal.