I can only give you hints as you aksing for something that stack system don’t support (at least i don’t think so , maybe i missing something)… and i don’t know if understand you properly
Considering you want to make it work in BP, I think best way to do this is to create custom event UK2Node which you could plug to delegate, read out UProperties of delegate and then call master function, which could use CustomThunk to take any argument property, you can read about here:
https://forums.unrealengine.com/community/community-content-tools-and-tutorials/27351-tutorial-how-to-accept-wildcard-structs-in-your-ufunctions?56537-Tutorial-How-to-accept-wildcard-structs-in-your-UFUNCTIONs=
Now you need to remember practically all graph systems (which all based from same UI node system) in UE4 are like text file, it’s only data no executable parts, which iwhen cooked s used to create actual end product which is executetable, so foor example Blueprints generate virtual machine code same that powered UnrealScript in the past, Material generate HLSL code, SoundCues generate set of secundery runtime objects which decides which and how play sound. Each node or node type in graph have it’s own UEdGraphNode class which controls visual aspect of a node, how it links with everything else and (but does need to as nodes can be read out externally) code that generate executable end product. In case of blueprint are abdef of is UK2Node, they define types of nodes (as single class can generate multiple of specific type, like function call one deals with function call nodes or cast deals with all possible casts) and it also deals with compiling VM code.
Here code for UK2Node of event
https://github.com/EpicGames/UnrealEngine/blob/bf95c2cbc703123e08ab54e3ceccdd47e48d224a/Engine/Source/Editor/BlueprintGraph/Private/K2Node_CustomEvent.cpp
you can find all Uk2node nodes here:
https://github.com/EpicGames/UnrealEngine/tree/bf95c2cbc703123e08ab54e3ceccdd47e48d224a/Engine/Source/Editor/BlueprintGraph/Private
Good example and motivation that this is correct way of approach also would be SpawnActor, something that could have been dealed with simple BlueprintCallable bind, just to provide return value of spawn object type (build-in casting) not just Actor object its been implemented as UK2Node instead:
https://github.com/EpicGames/UnrealEngine/blob/bf95c2cbc703123e08ab54e3ceccdd47e48d224a/Engine/Source/Editor/BlueprintGraph/Private/K2Node_SpawnActor.cpp
Later on ExposeOnSpawn was introduced so that node also started to read out properties of selected class, create pins for once having “ExposeOnSpawn” on meta specifiers (yes you can freely read them) and compile code which will read out whatever is passed in and set them to defered spawn actor. This feature was fully implemented just by doing edits in UK2Node class of that node.
As how to compile VM code in node… i can’t help as i didn’t tried that yet, that why i pasted links to code so you can research yourself
You also need to be aware of reflection system. Each exposed thing in C++ have a representing UField object created on module load (by code generated by UnrealHeaderTool) and you can find them with TFieldTerator and TObjectIterator, you already interacting with those ;] you can not spawn actor without passing UClass* of class of actor you want top spawn (which usually mistaken with TSubclassOf which is just relation limiting template for UClass).
UE4 reflection system treats functions same as struct (just with fact that it has code which you can executed), as technically arguments is structure of variables., so UFunction inherence from UStruct instead of being it’s own UField
Reflection system let you also create virtual fields, what how Bleuprints can have Functions, Structs and Enums that don’t exist in native code, not to mention it allows blueprint to act as class that can be parented C++ class and work with cooperation with native code. But also i never explored that subject.
Each UField can have custom meta specifiers which can be read out, you already used them defiantly (meta=“”). you can place anything in there and UHT just gonna save them up to reflection system, does not check whatever they even ever be used, it assumes that there some code editor or plugins that use them, it doesn’t care about when and how if ever so you can practically write anything there(as long as specifier syntax allows) and whatever you do write will always land to reflection system. This allows to create custom features to those even on plugin and game code level. problem here is meta data for fields is not stored in shipping build of the engine (or else it been build with flag that enables it, but that require some custom compilation of engine). Might be useful for what you trying to do, functions to read them out are clearly visible in UField API reference page i linked above