Strange closure behaviour

Adam D. Ruppe destructionator at gmail.com
Sat Jun 15 17:06:18 UTC 2019


On Saturday, 15 June 2019 at 16:29:29 UTC, Rémy Mouëza wrote:
> I don't know if we can tell this is a compiler bug.

I can't remember where the key fact was, but I used to agree with 
you (several languages work this same way, and it makes a lot of 
sense for ease of the implementation), but someone convinced me 
otherwise by pointing to the language of the D spec.

I just can't find that reference right now...

It is worth noting too that the current behavior also opens up a 
whole in the immutable promises; the loop variable can be passed 
as immutable to the outside via a delegate, but then modified 
afterward, which is unambiguously a bug.

Regardless of bug vs spec, it isn't implemented and I wouldn't 
expect that to change any time soon, so it is good to just learn 
the wrapper function technique :) (and it is useful in those 
other languages too)


More information about the Digitalmars-d-learn mailing list