If they don't, I have to wrap it like so:

import std.signals;

class Signal(T) {
protected:
   mixin Signal!(T);
};

class Changed(T) : Signal!T {
protected:
   void delegate(T)[] slots;

public:
   override void connect(void delegate(T) slot) {
      foreach (s; slots) {
         if (s == slot)
            return;
      }
      slots ~= slot;
      super.connect(slot);
   }

   override void disconnect(void delegate(T) slot) {
       import std.algorithm;

       foreach (s; slots) {
          if (s == slot) {
             slots.remove(s);
             super.disconnect(slot);
             break;
          }
       }
   }

   override void disconnectAll() {
        super.disconnectAll();
   }
}

??

Reply via email to