If you function type don’t have any return then you put void same as you do in function declarations, if you have no arguments you simply leave empty ()
Note that you can bind delegate to delegate. Delegate works like storage function bindings and you can pass then one to another. It also let you bind functions with extra arguments. I see this more rethen then use function pointers to forward it
I use TFunction<void()> as you describe but in some instances get a VS “no instance of function template matches the argument list” error with the claimed expected argument type being some random class that’s not even referenced.
No instance of function template Test::Private::DoWork matches the argument list argument types are (Test::Private::ABC, void(Test::Private::ABC::*)())
Build Error:
Error C2672 ‘Work’: no matching overloaded function found