How to break const

Timon Gehr timon.gehr at gmx.ch
Mon Jun 18 08:10:59 PDT 2012


On 06/18/2012 04:55 PM, Mehrdad wrote:
>
> Identical calls giving identical results? What?
>
>
> import std.stdio;
> struct S
> {
>           this(int a)
>           {
>                   this.a = a;
>                   this.increment = { return this.a++; };
>           }
>           int a;
>           int delegate() pure increment;
>           auto oops() const { return this.increment(); }
> }
> void main()
> {
>           auto c = immutable(S)(0);
>           writeln(c.oops()); // 0
>           writeln(c.oops()); // 1
>           writeln(c.oops()); // 2
>           writeln(c.oops()); // 3
>           writeln(c.oops()); // 4
>           writeln(c.oops()); // 5
> }

Now you have managed to break the type system.
The underlying issue is unrelated to delegates though.


More information about the Digitalmars-d mailing list