On Monday, 5 April 2021 at 05:22:22 UTC, frame wrote:
On Sunday, 4 April 2021 at 18:05:04 UTC, tsbockman wrote:
Thus, the solution is to use an explicit `delegate` instead of
`lazy`:
Yes, I forgot to mention that.
Could you please explain why you set 'scope' here? Isn't it
wanted to keep references here?
`scope` here indicates that no references to the `f` delegate
itself will be escaped from `opAssign`, giving the caller the
option of allocating the closure on the stack.
`opAssign` may retain a reference to an `Exception` thrown by the
delegate, but that's OK because the `Exception` is not part of
the `f` delegate data structure, not even indirectly or
transitively. (I can explain/justify this in more detail if that
still doesn't make sense.)