Yeah, if I change the two function types in Signal to this: alias bool delegate(ref Types) slot_t; alias void delegate(ref Types) void_slot_t;
then I can connect functions with ref arguments. But then I'll get exceptions thrown if the functions have non-ref arguments. This seems like a difficult problem to solve. How can you (efficiently) store a dynamic list of function pointers which could have arbitrary storage classes for its parameters? Hmm..