DECLARE_DELEGATE_REVAL(FGameplayAttribute, FAttributeSignature);
比如这里的代理
定义为FAttributeSignature AttributeSignature ;
但是可以不生命代理,直接声明
TBaseStaticDelegateInstance<FGameplayAttribute(), FDefaultDelegateUserPolicy>::FFuncPtr
它代表一个函数指针FGameplayAttribute(*)()
也就是说,这两个效果是一样的
然后可以使用C++中的语法
template<class T>
using TStaticFuncPtr = typename TBaseStaticDelegateInstance<T, FDefaultDelegateUserPolicy>::FFuncPtr;
最终的效果就是该代理被
TStaticFuncPtr <T>所代替,增加了复用性