How do I remove a delegate with payload?

I’m binding a function to a non-dynamic multicast delegate that takes one payload parameter. Upon being called, the function should remove itself from the delegate and I’m having problems with this. The RemoveUObject() function does not accept the function signature with the extra payload parameter and there’s no overload to take in the payload for removal.

The only way I can think of is by using CreateUObject(), storing the intermediate delegate in a variable and using the Add() and Remove() functions (which have a big, nasty “DEPRECATED” on their comments, which sounds weird for me since it’s the only way to plug a dynamic delegate into a non-dynamic one). But this isn’t a very good solution as I’ll have to add even more boilerplate for each usage of delegates in my classes.