Why does the following code compile? import std.stdio; int f(ref int x) { return x++; } class A { int x=123; int g() const { return f(x); } } void main() { auto a = new A; writeln(a.g()); writeln(a.g()); }
Shouldn't the const member g() be prohibited from passing a ref to a member variable to f()? But this code not only compiles, it outputs: 123 124 So I've managed to call a const member of A to alter the value of A.x? Am I misunderstanding the meaning of const when applied to a member function, or is this a compiler bug? P.S. I'm using gdc-4.6; does dmd also have this behaviour? T -- Lawyer: (n.) An innocence-vending machine, the effectiveness of which depends on how much money is inserted.