https://issues.dlang.org/show_bug.cgi?id=8006
mikey <abc.mi...@googlemail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |abc.mi...@googlemail.com --- Comment #5 from mikey <abc.mi...@googlemail.com> --- As a beginner this is a source of some confusion for me. Ideally the implementation details of a property vs a member variable should be transparent to me as a user of a given object. class Test { private: int _val, _val2; public: @property int val() { return _val; } @property void val(int val) { _val = val; } @property auto ref val2() { return _val2; } } void main() { auto t = new Test; //t.val += 100; // BAD - not an lvalue t.val(t.val + 100); // probably preferable to misleading syntax t.val2 += 200; // OK - but inconsistent import std.stdio : writefln; writefln("val: %d, val2: %d", t.val, t.val2); } ~ --