On 02/09/13 16:18, Artur Skawina wrote:
Requiring captures to be explicit would reduce the chance of such bugs happening, but also have a significant cost and be a rather drastic change to the language...
For what it's worth, I'm not advocating for any change in the language. I'm simply highlighting a place where it's possible to shoot oneself in the foot :-)
In this case, there's no need for a delegate, as you do not want to operate on the original object. So you can simply do: //... private void function(ref typeof(this)) _jump; private void jump() { _jump(this); } this(size_t max) { _max = max; _jump = &jump10; } //... static jump10(ref typeof(this)this_) { this_._count += 10; writeln("At end of jump, count = ", this_._count); } It's cheaper than the other alternative (updating ctx in cpctor), but slightly more verbose. More importantly, AFAICT, this is a better fit for the actual problem.
Oh, nice thought. Thank you! :-)