xxxxxxxxxx
import std.stdio;
struct Field {
int n = -1;
void opAssign(int a) {
n = a;
writefln("Field.opAssign(%s)", a);
}
}
struct Register {
Field[] clocks;
ref Field clock(int a) {
writefln("Register.clock(%s)", a);
clocks ~= Field();
return clocks[$-1];
}
void good() {
foreach (clock; clocks)
assert(clock != Field.init);
}
}
void main() {
Register register;
register.clock(1) = 10; // works, good
register.clock = 10; // works too, but adds Field.init to clocks
writeln(register.clocks);
register.good(); // runtime error
}