4#if !defined( __Delegate_h__ ) || !defined( FUNC_INCLUDING_INLINE_IMPL )
5 #error "This inline header must only be included by Delegate.h"
13#include "Misc/AssertionMacros.h"
15#include "UObject/NameTypes.h"
16#include "UObject/ScriptDelegates.h"
18#include "Templates/IsConst.h"
19#include "Templates/RemoveReference.h"
20#include "Templates/SharedPointer.h"
21#include "Templates/UnrealTemplate.h"
28template <
typename FuncType,
typename UserPolicy>
struct IBaseDelegateInstance;
34template <
typename To,
typename From>
41
42
43
44
45
46
47template <
typename DelegateSignature,
typename UserPolicy = FDefaultDelegateUserPolicy>
50 static_assert(
sizeof(UserPolicy) == 0,
"Expected a function signature for the delegate template parameter");
53template <
typename InRetValType,
typename... ParamTypes,
typename UserPolicy>
57 using FuncType = InRetValType (ParamTypes...);
58 using DelegateInstanceInterfaceType = IBaseDelegateInstance<FuncType, UserPolicy>;
60 using DelegateType =
typename UserPolicy::FDelegateExtras;
61 using DelegateInstanceType =
typename UserPolicy::FDelegateInstanceExtras;
62 using MulticastDelegateType =
typename UserPolicy::FMulticastDelegateExtras;
64 static_assert(
std::is_convertible_v<DelegateType*,
FDelegateBase*>,
"UserPolicy::FDelegateExtras should publicly inherit FDelegateBase");
65 static_assert(
std::is_convertible_v<DelegateInstanceType*,
IDelegateInstance*>,
"UserPolicy::FDelegateInstanceExtras should publicly inherit IDelegateInstance");
66 static_assert(
std::is_convertible_v<MulticastDelegateType*,
TMulticastDelegateBase<UserPolicy>*> ||
std::is_convertible_v<MulticastDelegateType*,
TTSMulticastDelegateBase<UserPolicy>*>,
"UserPolicy::FMulticastDelegateExtras should publicly inherit TMulticastDelegateBase<UserPolicy> or TTSMulticastDelegateBase<UserPolicy>");
89 template <
typename... VarTypes>
using TFuncPtr =
RetValType(*)(ParamTypes..., VarTypes...);
94 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TSPMethodDelegate : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > Super; TSPMethodDelegate (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
95 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TSPMethodDelegate_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > Super; TSPMethodDelegate_Const (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
96 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_OneVar<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TSPMethodDelegate_OneVar : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > Super; TSPMethodDelegate_OneVar (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
97 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_OneVar_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TSPMethodDelegate_OneVar_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > Super; TSPMethodDelegate_OneVar_Const (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
98 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_TwoVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TSPMethodDelegate_TwoVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > Super; TSPMethodDelegate_TwoVars (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
99 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_TwoVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TSPMethodDelegate_TwoVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > Super; TSPMethodDelegate_TwoVars_Const (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
100 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_ThreeVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TSPMethodDelegate_ThreeVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TSPMethodDelegate_ThreeVars (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
101 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_ThreeVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TSPMethodDelegate_ThreeVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TSPMethodDelegate_ThreeVars_Const(
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
102 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_FourVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TSPMethodDelegate_FourVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TSPMethodDelegate_FourVars (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
103 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TSPMethodDelegate_FourVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TSPMethodDelegate_FourVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TSPMethodDelegate_FourVars_Const (
const TSharedRef< UserClass,
ESPMode::ThreadSafe >& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
106 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > Super; TThreadSafeSPMethodDelegate (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
107 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy > Super; TThreadSafeSPMethodDelegate_Const (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
108 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_OneVar<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_OneVar : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > Super; TThreadSafeSPMethodDelegate_OneVar (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
109 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_OneVar_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_OneVar_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type > Super; TThreadSafeSPMethodDelegate_OneVar_Const (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
110 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_TwoVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_TwoVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > Super; TThreadSafeSPMethodDelegate_TwoVars (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
111 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_TwoVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_TwoVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type > Super; TThreadSafeSPMethodDelegate_TwoVars_Const (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
112 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_ThreeVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_ThreeVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TThreadSafeSPMethodDelegate_ThreeVars (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
113 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_ThreeVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_ThreeVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TThreadSafeSPMethodDelegate_ThreeVars_Const(
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
114 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_FourVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_FourVars : TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseSPMethodDelegateInstance<
false, UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TThreadSafeSPMethodDelegate_FourVars (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
115 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TThreadSafeSPMethodDelegate_FourVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TThreadSafeSPMethodDelegate_FourVars_Const : TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseSPMethodDelegateInstance<
true , UserClass, ESPMode::ThreadSafe, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TThreadSafeSPMethodDelegate_FourVars_Const (
const TSharedRef<UserClass,
ESPMode::ThreadSafe>& InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
118 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TRawMethodDelegate : TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy > {
typedef TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy > Super; TRawMethodDelegate (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
119 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TRawMethodDelegate_Const : TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy > {
typedef TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy > Super; TRawMethodDelegate_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
120 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_OneVar<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TRawMethodDelegate_OneVar : TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type > {
typedef TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type > Super; TRawMethodDelegate_OneVar (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
121 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_OneVar_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TRawMethodDelegate_OneVar_Const : TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type > {
typedef TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type > Super; TRawMethodDelegate_OneVar_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
122 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_TwoVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TRawMethodDelegate_TwoVars : TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type > Super; TRawMethodDelegate_TwoVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
123 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_TwoVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TRawMethodDelegate_TwoVars_Const : TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type > Super; TRawMethodDelegate_TwoVars_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
124 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_ThreeVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TRawMethodDelegate_ThreeVars : TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TRawMethodDelegate_ThreeVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
125 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_ThreeVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TRawMethodDelegate_ThreeVars_Const : TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TRawMethodDelegate_ThreeVars_Const(UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
126 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_FourVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TRawMethodDelegate_FourVars : TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseRawMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TRawMethodDelegate_FourVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
127 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TRawMethodDelegate_FourVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TRawMethodDelegate_FourVars_Const : TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseRawMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TRawMethodDelegate_FourVars_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
130 template <
typename UObjectTemplate >
struct UE_DEPRECATED(5.1,
"DelegateType::TUFunctionDelegateBinding has been deprecated") TUFunctionDelegateBinding : TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy > {
typedef TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy > Super; TUFunctionDelegateBinding (UObjectTemplate* InUserObject,
const FName& InFunctionName ) : Super(InUserObject, InFunctionName ) {} };
131 template <
typename UObjectTemplate,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUFunctionDelegateBinding_OneVar has been deprecated") TUFunctionDelegateBinding_OneVar : TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type > {
typedef TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type > Super; TUFunctionDelegateBinding_OneVar (UObjectTemplate* InUserObject,
const FName& InFunctionName, Var1Type Var1 ) : Super(InUserObject, InFunctionName, Var1 ) {} };
132 template <
typename UObjectTemplate,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUFunctionDelegateBinding_TwoVars has been deprecated") TUFunctionDelegateBinding_TwoVars : TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type > Super; TUFunctionDelegateBinding_TwoVars (UObjectTemplate* InUserObject,
const FName& InFunctionName, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InFunctionName, Var1, Var2 ) {} };
133 template <
typename UObjectTemplate,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUFunctionDelegateBinding_ThreeVars has been deprecated") TUFunctionDelegateBinding_ThreeVars : TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TUFunctionDelegateBinding_ThreeVars(UObjectTemplate* InUserObject,
const FName& InFunctionName, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InFunctionName, Var1, Var2, Var3 ) {} };
134 template <
typename UObjectTemplate,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TUFunctionDelegateBinding_FourVars has been deprecated") TUFunctionDelegateBinding_FourVars : TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseUFunctionDelegateInstance<UObjectTemplate, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TUFunctionDelegateBinding_FourVars (UObjectTemplate* InUserObject,
const FName& InFunctionName, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InFunctionName, Var1, Var2, Var3, Var4) {} };
137 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate : TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy > {
typedef TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy > Super; TUObjectMethodDelegate (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
138 template <
typename UserClass >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_Const : TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy > {
typedef TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy > Super; TUObjectMethodDelegate_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr ) : Super(InUserObject, InMethodPtr ) {} };
139 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_OneVar<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_OneVar : TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type > {
typedef TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type > Super; TUObjectMethodDelegate_OneVar (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
140 template <
typename UserClass,
typename Var1Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_OneVar_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_OneVar_Const : TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type > {
typedef TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type > Super; TUObjectMethodDelegate_OneVar_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1 ) : Super(InUserObject, InMethodPtr, Var1 ) {} };
141 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_TwoVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_TwoVars : TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type > Super; TUObjectMethodDelegate_TwoVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
142 template <
typename UserClass,
typename Var1Type,
typename Var2Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_TwoVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_TwoVars_Const : TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type > {
typedef TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type > Super; TUObjectMethodDelegate_TwoVars_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2 ) : Super(InUserObject, InMethodPtr, Var1, Var2 ) {} };
143 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_ThreeVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_ThreeVars : TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TUObjectMethodDelegate_ThreeVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
144 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type >
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_ThreeVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_ThreeVars_Const : TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > {
typedef TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type > Super; TUObjectMethodDelegate_ThreeVars_Const(UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3 ) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3 ) {} };
145 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_FourVars<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_FourVars : TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseUObjectMethodDelegateInstance<
false, UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TUObjectMethodDelegate_FourVars (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
146 template <
typename UserClass,
typename Var1Type,
typename Var2Type,
typename Var3Type,
typename Var4Type>
struct UE_DEPRECATED(5.1,
"DelegateType::TUObjectMethodDelegate_FourVars_Const<UserClass, ...>::FMethodPtr has been deprecated - use DelegateType::TConstMethodPtr<UserClass, ...> instead") TUObjectMethodDelegate_FourVars_Const : TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> {
typedef TBaseUObjectMethodDelegateInstance<
true , UserClass, FuncType, UserPolicy, Var1Type, Var2Type, Var3Type, Var4Type> Super; TUObjectMethodDelegate_FourVars_Const (UserClass* InUserObject,
typename Super::FMethodPtr InMethodPtr, Var1Type Var1, Var2Type Var2, Var3Type Var3, Var4Type Var4) : Super(InUserObject, InMethodPtr, Var1, Var2, Var3, Var4) {} };
149 template <
typename... VarTypes >
struct UE_DEPRECATED(5.1,
"DelegateType::FStaticDelegate<...>::FFuncPtr has been deprecated - use DelegateType::TFuncPtr<...> instead") FStaticDelegate : TBaseStaticDelegateInstance<FuncType, UserPolicy, VarTypes... > {
typedef TBaseStaticDelegateInstance<FuncType, UserPolicy, VarTypes... > Super; FStaticDelegate (
typename Super::FFuncPtr InFuncPtr, VarTypes... Vars ) : Super(InFuncPtr, Vars... ) {} };
154
155
156 template <
typename... VarTypes>
165
166
167
168 template<
typename FunctorType,
typename... VarTypes>
177
178
179
180 template<
typename UserClass,
typename FunctorType,
typename... VarTypes>
189
190
191
192
193
194 template <
typename UserClass,
typename... VarTypes>
195 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateRaw(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
197 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
203 template <
typename UserClass,
typename... VarTypes>
204 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateRaw(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
212
213
214
215
216
217 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
218 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
220 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
226 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
227 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
235
236
237
238
239
240 template <
typename UserClass,
typename... VarTypes>
241 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateSP(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
243 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
249 template <
typename UserClass,
typename... VarTypes>
250 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateSP(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
258
259
260
261
262
263
264
265 template <
typename UserClass,
typename... VarTypes>
268 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
274 template <
typename UserClass,
typename... VarTypes>
283
284
285
286
287
288
289
290 template <
typename UserClass,
typename... VarTypes>
293 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
299 template <
typename UserClass,
typename... VarTypes>
308
309
310
311
312
313 template <
typename UObjectTemplate,
typename... VarTypes>
320 template <
typename UObjectTemplate,
typename... VarTypes>
329
330
331
332
333
334 template <
typename UserClass,
typename... VarTypes>
335 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateUObject(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
337 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
343 template <
typename UserClass,
typename... VarTypes>
344 UE_NODISCARD inline static TDelegate<
RetValType(ParamTypes...), UserPolicy>
CreateUObject(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
350 template <
typename UserClass,
typename... VarTypes>
353 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
359 template <
typename UserClass,
typename... VarTypes>
370
371
377
378
384
385
392
393
394
395
399
400
401
402
409
410
411
412
416
417
418
419
443
444
445 template <
typename... VarTypes>
446 inline void BindStatic(
typename TBaseStaticDelegateInstance<FuncType, UserPolicy, std::decay_t<VarTypes>...>::FFuncPtr InFunc, VarTypes&&... Vars)
452
453
454
455 template<
typename FunctorType,
typename... VarTypes>
456 inline void BindLambda(FunctorType&& InFunctor, VarTypes&&... Vars)
462
463
464
465 template<
typename UserClass,
typename FunctorType,
typename... VarTypes>
466 inline void BindWeakLambda(UserClass* InUserObject, FunctorType&& InFunctor, VarTypes&&... Vars)
472
473
474
475
476
477 template <
typename UserClass,
typename... VarTypes>
478 inline void BindRaw(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
480 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
484 template <
typename UserClass,
typename... VarTypes>
485 inline void BindRaw(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
491
492
493 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
494 inline void BindSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
496 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
500 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
501 inline void BindSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
507
508
509
510
511
512 template <
typename UserClass,
typename... VarTypes>
513 inline void BindSP(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
515 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
519 template <
typename UserClass,
typename... VarTypes>
520 inline void BindSP(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
526
527
528
529
530
531
532
533 template <
typename UserClass,
typename... VarTypes>
536 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
540 template <
typename UserClass,
typename... VarTypes>
547
548
549
550
551
552
553
554 template <
typename UserClass,
typename... VarTypes>
555 inline void BindThreadSafeSP(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
557 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
561 template <
typename UserClass,
typename... VarTypes>
562 inline void BindThreadSafeSP(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
568
569
570
571
572
573 template <
typename UObjectTemplate,
typename... VarTypes>
574 inline void BindUFunction(UObjectTemplate* InUserObject,
const FName& InFunctionName, VarTypes&&... Vars)
578 template <
typename UObjectTemplate,
typename... VarTypes>
585
586
587
588
589
590 template <
typename UserClass,
typename... VarTypes>
591 inline void BindUObject(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
593 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
597 template <
typename UserClass,
typename... VarTypes>
598 inline void BindUObject(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
602 template <
typename UserClass,
typename... VarTypes>
603 inline void BindUObject(
TObjectPtr<UserClass> InUserObject,
typename TMemFunPtrType<
false, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
605 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
609 template <
typename UserClass,
typename... VarTypes>
610 inline void BindUObject(
TObjectPtr<UserClass> InUserObject,
typename TMemFunPtrType<
true, UserClass, RetValType (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
617
618
619
620
621
622
623
636
637
638
639
645 std::enable_if_t<std::is_void<DummyRetValType>::value>* =
nullptr
659
660
668
669
670
671
672
673
674
675
676
677template <
typename DelegateSignature,
typename UserPolicy = FDefaultDelegateUserPolicy>
680 static_assert(
sizeof(DelegateSignature) == 0,
"Expected a function signature for the delegate template parameter");
683template <
typename RetValType,
typename... ParamTypes,
typename UserPolicy>
686 static_assert(
sizeof(RetValType) == 0,
"The return type of a multicast delegate must be void");
689template <
typename... ParamTypes,
typename UserPolicy>
690class TMulticastDelegate<
void(ParamTypes...), UserPolicy> :
public UserPolicy::FMulticastDelegateExtras
692 using Super =
typename UserPolicy::FMulticastDelegateExtras;
693 using InvocationListType =
typename Super::InvocationListType;
694 using DelegateInstanceInterfaceType = IBaseDelegateInstance<
void (ParamTypes...), UserPolicy>;
698 using FDelegate =
TDelegate<
void(ParamTypes...), UserPolicy>;
703 using Super::IsBound;
704 using Super::IsBoundToObject;
705 using Super::RemoveAll;
706 using Super::GetAllocatedSize;
710 using Super::AddDelegateInstance;
711 using Super::RemoveDelegateInstance;
712 using Super::GetDelegateInstanceProtectedHelper;
716
717
718
719
726
727
728
729
736
737
738
739
740 template <
typename... VarTypes>
741 inline FDelegateHandle AddStatic(
typename TBaseStaticDelegateInstance<
void (ParamTypes...), UserPolicy, std::decay_t<VarTypes>...>::FFuncPtr InFunc, VarTypes&&... Vars)
747
748
749
750
751
752 template<
typename FunctorType,
typename... VarTypes>
759
760
761
762
763
764
765 template<
typename UserClass,
typename FunctorType,
typename... VarTypes>
772
773
774
775
776
777
778
779
780 template <
typename UserClass,
typename... VarTypes>
781 inline FDelegateHandle AddRaw(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
783 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
787 template <
typename UserClass,
typename... VarTypes>
788 inline FDelegateHandle AddRaw(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
794
795
796
797
798
799
800
801 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
802 inline FDelegateHandle AddSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
804 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
808 template <
typename UserClass,
ESPMode Mode,
typename... VarTypes>
809 inline FDelegateHandle AddSP(
const TSharedRef<UserClass, Mode>& InUserObjectRef,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
815
816
817
818
819
820
821
822 template <
typename UserClass,
typename... VarTypes>
823 inline FDelegateHandle AddSP(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
825 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
829 template <
typename UserClass,
typename... VarTypes>
830 inline FDelegateHandle AddSP(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
836
837
838
839
840
841
842
843 template <
typename UserClass,
typename... VarTypes>
846 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
850 template <
typename UserClass,
typename... VarTypes>
857
858
859
860
861
862
863
864
865
866 template <
typename UserClass,
typename... VarTypes>
867 inline FDelegateHandle AddThreadSafeSP(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
869 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
873 template <
typename UserClass,
typename... VarTypes>
874 inline FDelegateHandle AddThreadSafeSP(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
880
881
882
883
884
885
886
887 template <
typename UObjectTemplate,
typename... VarTypes>
892 template <
typename UObjectTemplate,
typename... VarTypes>
899
900
901
902
903
904
905
906 template <
typename UserClass,
typename... VarTypes>
907 inline FDelegateHandle AddUObject(UserClass* InUserObject,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
909 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
913 template <
typename UserClass,
typename... VarTypes>
914 inline FDelegateHandle AddUObject(
const UserClass* InUserObject,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
918 template <
typename UserClass,
typename... VarTypes>
919 inline FDelegateHandle AddUObject(
TObjectPtr<UserClass> InUserObject,
typename TMemFunPtrType<
false, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
921 static_assert(!
TIsConst<
UserClass>::
Value,
"Attempting to bind a delegate with a const object pointer and non-const member function.");
925 template <
typename UserClass,
typename... VarTypes>
926 inline FDelegateHandle AddUObject(
TObjectPtr<UserClass> InUserObject,
typename TMemFunPtrType<
true, UserClass,
void (ParamTypes..., std::decay_t<VarTypes>...)>::Type InFunc, VarTypes&&... Vars)
934
935
936
937
938
939
940
952
953
957
958
959
960
967
968
969
970
971
982
983
984
985
992template <
typename DelegateSignature>
993using TTSMulticastDelegate = TMulticastDelegate<DelegateSignature, FDefaultTSDelegateUserPolicy>;
997
998
999
1000
1001template <
typename TWeakPtr,
typename RetValType,
typename... ParamTypes>
1006
1007
1011
1012
1013
1014
1020
1021
1022 template<
class UserClass >
1026 typedef RetValType (UserClass::*FMethodPtr)(ParamTypes... Params);
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039 template<
class UserClass >
1053 ensureMsgf(
this->
IsBound(), TEXT(
"Unable to bind delegate to '%s' (function might not be marked as a UFUNCTION or object may be pending kill)"), *InFunctionName.ToString());
1055 template<
class UserClass >
1073
1074
1075
1076
1077
1078template <
typename TWeakPtr,
typename RetValType,
typename... ParamTypes>
1086
1087
1091
1092
1093
1094
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110 template<
class UserClass >
1119 template<
class UserClass >
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135 template<
class UserClass >
1147 template<
class UserClass >
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163 template<
class UserClass >
1175 template<
class UserClass >
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191 template<
class UserClass >
1200 template<
class UserClass >
#define ensureMsgf( InExpression, InFormat,...)
#define UE_DEPRECATED(Version, Message)
T * ToRawPtr(const TObjectPtr< T > &Ptr)
void __Internal_BindDynamic(UserClass *InUserObject, typename TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
friend uint32 GetTypeHash(const TBaseDynamicDelegate &Key)
void __Internal_BindDynamic(TObjectPtr< UserClass > InUserObject, typename TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
TBaseDynamicDelegate(const TScriptDelegate< TWeakPtr > &InScriptDelegate)
bool __Internal_IsAlreadyBound(UserClass *InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName) const
TBaseDynamicMulticastDelegate(const TMulticastScriptDelegate< TWeakPtr > &InMulticastScriptDelegate)
void __Internal_AddUniqueDynamic(TObjectPtr< UserClass > InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
void __Internal_AddUniqueDynamic(UserClass *InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
void __Internal_RemoveDynamic(UserClass *InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
void __Internal_RemoveDynamic(TObjectPtr< UserClass > InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
void __Internal_AddDynamic(TObjectPtr< UserClass > InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
bool __Internal_IsAlreadyBound(TObjectPtr< UserClass > InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName) const
void __Internal_AddDynamic(UserClass *InUserObject, typename FDelegate::template TMethodPtrResolver< UserClass >::FMethodPtr InMethodPtr, FName InFunctionName)
TBaseDynamicMulticastDelegate()
TBaseDynamicDelegate< FWeakObjectPtr, RetValType, ParamTypes... > FDelegate
void BindThreadSafeSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindUObject(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
TDelegate(TYPE_OF_NULLPTR)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateThreadSafeSP(const TSharedRef< UserClass, ESPMode::ThreadSafe > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindLambda(FunctorType &&InFunctor, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateUObject(TObjectPtr< UserClass > InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindUFunction(TObjectPtr< UObjectTemplate > InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
FORCEINLINE RetValType Execute(ParamTypes... Params) const
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateStatic(typename TIdentity< RetValType(*)(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
TDelegate(const TDelegate &Other)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateSP(const TSharedRef< UserClass, Mode > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindThreadSafeSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateUObject(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateLambda(FunctorType &&InFunctor, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateRaw(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindUFunction(UObjectTemplate *InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
void BindThreadSafeSP(const TSharedRef< UserClass, ESPMode::ThreadSafe > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateRaw(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateUFunction(TObjectPtr< UObjectTemplate > InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateThreadSafeSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindSP(const TSharedRef< UserClass, Mode > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
InRetValType TFuncType(ParamTypes...)
void BindRaw(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void BindWeakLambda(UserClass *InUserObject, FunctorType &&InFunctor, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateUObject(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FORCEINLINE DelegateInstanceInterfaceType * GetDelegateInstanceProtected() const
void BindStatic(typename TBaseStaticDelegateInstance< FuncType, UserPolicy, std::decay_t< VarTypes >... >::FFuncPtr InFunc, VarTypes &&... Vars)
void BindUObject(TObjectPtr< UserClass > InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateUFunction(UObjectTemplate *InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
void BindUObject(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
bool ExecuteIfBound(ParamTypes... Params) const
TDelegate & operator=(TDelegate &&Other)=default
TDelegate(TDelegate &&Other)=default
TDelegate & operator=(const TDelegate &Other)
void BindRaw(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateThreadSafeSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, RetValType(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
static UE_NODISCARD TDelegate< RetValType(ParamTypes...), UserPolicy > CreateWeakLambda(UserClass *InUserObject, FunctorType &&InFunctor, VarTypes &&... Vars)
FDelegateHandle Add(const FDelegate &InNewDelegate)
FDelegateHandle Add(FDelegate &&InNewDelegate)
FDelegateHandle AddUObject(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddThreadSafeSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddThreadSafeSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddUObject(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddSP(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddThreadSafeSP(const TSharedRef< UserClass, ESPMode::ThreadSafe > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddSP(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
TMulticastDelegate(const TMulticastDelegate &Other)
FDelegateHandle AddRaw(const UserClass *InUserObject, typename TMemFunPtrType< true, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddWeakLambda(UserClass *InUserObject, FunctorType &&InFunctor, VarTypes &&... Vars)
FDelegateHandle AddStatic(typename TBaseStaticDelegateInstance< void(ParamTypes...), UserPolicy, std::decay_t< VarTypes >... >::FFuncPtr InFunc, VarTypes &&... Vars)
bool Remove(FDelegateHandle Handle)
FDelegateHandle AddUFunction(UObjectTemplate *InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
FDelegateHandle AddRaw(UserClass *InUserObject, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
void Broadcast(ParamTypes... Params) const
FDelegateHandle AddUFunction(TObjectPtr< UObjectTemplate > InUserObject, const FName &InFunctionName, VarTypes &&... Vars)
FDelegateHandle AddLambda(FunctorType &&InFunctor, VarTypes &&... Vars)
FDelegateHandle AddUObject(TObjectPtr< UserClass > InUserObject, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
FDelegateHandle AddSP(const TSharedRef< UserClass, Mode > &InUserObjectRef, typename TMemFunPtrType< false, UserClass, void(ParamTypes..., std::decay_t< VarTypes >...)>::Type InFunc, VarTypes &&... Vars)
TMulticastDelegate & operator=(const TMulticastDelegate &Other)