struct vs built-in type

Jack Applegame via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Dec 16 23:57:24 PST 2014


Code:

import std.stdio;

struct Bar {
	int payload;
	alias payload this;
}
struct Foo {
	private {
		Bar m_bar;
		int m_baz;
	}
	@property {
		Bar bar() { return m_bar; }
		void bar(Bar v) { m_bar = v; }
		int baz() { return m_baz; }
		void baz(int v) { m_baz = v; }
	}
}

void main() {
	Foo foo;
	foo.bar += 4; // Compiles. Why?
	foo.baz += 4; // Error: foo.baz() is not an lvalue
}

foo.baz() is not lvalue. It's true.
But foo.bar() is lvalue. Why? I expected the same error. This 
line has no effect, but the compiler does not issue even a 
warning.

DMD64 D Compiler v2.066.1. CentOS 7


More information about the Digitalmars-d-learn mailing list