module ws.event; import ws.list; class Event(Args...){ this(){ unbind; } void unbind(){ list = new List!(void delegate(Args)); } void opOpAssign(string op)(void delegate(Args) d){ mixin("list " ~ op ~ "= d;"); } void opCall(Args args){ foreach(d; list) d(args); } List!(void delegate(Args)) list; }