How to break const

deadalnix deadalnix at gmail.com
Mon Jun 18 14:08:17 PDT 2012


Le 18/06/2012 09:14, Mehrdad a écrit :
> Okay, how about this? http://ideone.com/VMlzS
>
> Does this break const?
>
>
> import std.stdio;
> class S
> {
> this(int a)
> {
> this.a = a;
> this.increment = { this.a++; };
> }
> int a;
> void delegate() increment;
> void oops() const { this.increment(); }
> }
> void main()
> {
> auto c = new const(S)(0);
> writeln(c.a);
> c.oops();
> writeln(c.a);
> }

Depending on how it is specified, I think you should either :
  - get an error when constructing c, because S isn't « constable ». 
(delegate type cannot be consted, but can be unconsted safely).
  - get an error when you try to call increment in oops, because the 
delegate type can't ensure the constness of the operation.


More information about the Digitalmars-d mailing list