Compiler bug? (alias sth this; and std.signals)
Joe
l0calh05t at gmx.net
Mon Nov 12 03:59:49 PST 2012
Ok, i was trying out D and wanted to see if i could create
something that behaves like a property but adds a change
notification signal. Doing this, I encountered a hangup which
might be a bug. So far I have the following:
-----------------------------------------------------------
import std.signals;
import std.stdio;
struct Property
{
alias get this;
int set(int v) { emit(); return data_ = v; }
int get() { return data_; }
int opAssign(int v) { return set(v); }
mixin Signal!();
private:
int data_ = 0;
}
struct Foo
{
Property prop;
}
class Observer
{
void watch()
{
writeln("Value change observed!");
}
}
-----------------------------------------------------------
This works:
void main()
{
Foo f;
Observer o = new Observer;
f.prop.connect(&o.watch);
f.prop = 7;
}
This also works:
void main()
{
Foo f;
Observer o = new Observer;
f.prop = 7;
writeln(f.prop);
}
This never terminates:
void main()
{
Foo f;
Observer o = new Observer;
f.prop.connect(&o.watch);
f.prop = 7;
writeln(f.prop);
}
More information about the Digitalmars-d
mailing list