Delegates don't do what they should

I’m about to lose my mind and I’m 90% sure I’m not going to get a useful answer to this, but I have to vent. Maybe by some freak chance an issue emerges from this and it actually gets solved. Here’s what I want:

I want a certain kind of MulticastDelegate. I simply add one of these in my class giving it only the call parameters for the delegate, I don’t have to create any extra interfaces or classes. C++ and Blueprint objects can then bind delegates to this MD with a priority. Higher priority delegates get called first. The delegates are also able to stop the Broadcast by returning true or setting a reference parameter to true, whatevs.

Now here comes the problems:

  • Dynamic delegates can’t have reference parameters if they’re going to be bound by Blueprint
  • C++ Preprocessor Macros can’t have anything in them that has to be parsed by the UHT
  • C++ Templates aren’t supported at all for anything Blueprint related
  • It’s impossible to simply iterate the bound delegates in MulticastDelegates/EventDispatchers and call them at one’s own leisure
  • Even if that worked MulticastDelegates can’t have reference parameters

This question is really more of a plea to the Epic guys to put some more work into Delegates.