On Monday, 4 April 2016 at 08:10:10 UTC, Edwin van Leeuwen wrote:
Is there a way to make sure a delegate only reads state, without changing it? I tried annotating the delegate as const, but that does not seem to work.
Note that annotating with pure also doesn't help. As a result we can have a pure delegate that returns different results every time it is called.
```D void main() { import std.stdio : writeln; auto r = [0,1,2,3]; auto f = delegate() const pure { import std.array : front, popFront; r.popFront; return r.front; }; r.writeln; // [0,1,2,3] auto f1 = f(); r.writeln; // [1,2,3] assert( f() == f1 ); // Throws } ```