How to break const

Mehrdad wfunction at hotmail.com
Mon Jun 18 08:15:57 PDT 2012


On Monday, 18 June 2012 at 15:11:00 UTC, Timon Gehr wrote:
> 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.



Yeah, I didn't mean to say it's a delegate issue either. That's 
why the title was saying "how to break _const_". Delegates were 
just a means to an end. :)


So (**IMHO**) if that's really the case, we should really spend 
some time fixing the /design/ of const before the 
implementation... good idea or no?


More information about the Digitalmars-d mailing list