const violation?

H. S. Teoh hsteoh at quickfur.ath.cx
Fri Jan 13 12:27:56 PST 2012


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.


More information about the Digitalmars-d-learn mailing list