Discussion Thread: DIP 1033--Implicit Conversion of Expressions to Delegates--Final Review
newshound2 at digitalmars.com
Sun Nov 22 09:18:17 UTC 2020
On 11/20/2020 12:06 AM, Manu wrote:
> So, the thing that makes me nervous about this DIP, is that it may substantially
> proliferate allocated closures.
> I would want to have high confidence that people exclusively use `scope`
> delegates, such that the closure can (will?/must?) be stack allocated.
> In my experience, in the rare instance that I want to use a lazy parameter in
> the sorts of ways that might be affected by this DIP, it's usually in support of
> a fairly small optimisation, or a modest convenience in the API.
> Relative to that optimisation, if there's a risk of introducing a closure
> allocation, that would vastly out-weight the advantage by my judgement, and it's
> very easy for such allocations to go unnoticed. It's completely invisible.
> I would appeal that this DIP be changed such that auto-delegates must be
> `scope`, and non-scope delegates should require the user to specify a non-scope
> delegate argument using typical delegate syntax, so that you can plainly see it.
> Without requiring `scope` delegates, the risk of hidden allocations is extremely
> high, and it's almost certainly NOT what anybody would ever want from a lazy
> argument, which is virtually always an INPUT argument, and shouldn't be retained
> past the life of the call.
Hmm, this is a good point I never thought of. Well put!
More information about the Digitalmars-d