21template<
typename ObjectType>
40 static_assert(
sizeof(ObjectType) == 0,
"Tried to initialize TNonNullPtr with a null pointer!");
49 ensureMsgf(InObject,
TEXT(
"Tried to initialize TNonNullPtr with a null pointer!"));
52#if UE_ENABLE_NOTNULL_WRAPPER
58 UE_REQUIRES(std::is_convertible_v<OtherObjectType, ObjectType*>)
71 UE_REQUIRES(std::is_convertible_v<OtherObjectType*, ObjectType*>)
84 static_assert(
sizeof(ObjectType) == 0,
"Tried to assign a null pointer to a TNonNullPtr!");
93 ensureMsgf(InObject,
TEXT(
"Tried to assign a null pointer to a TNonNullPtr!"));
98#if UE_ENABLE_NOTNULL_WRAPPER
104 UE_REQUIRES(std::is_convertible_v<OtherObjectType, ObjectType*>)
118 UE_REQUIRES(std::is_convertible_v<OtherObjectType*, ObjectType*>)
122 Object =
Other.Get();
131 return Object ==
Other.Object;
133#if !PLATFORM_COMPILER_HAS_GENERATED_COMPARISON_OPERATORS
136 return Object !=
Other.Object;
149 return Object ==
Other;
157 return Lhs == Rhs.Object;
159#if !PLATFORM_COMPILER_HAS_GENERATED_COMPARISON_OPERATORS
166 return Object !=
Other;
174 return Lhs != Rhs.Object;
181 inline operator ObjectType*()
const
190 inline ObjectType*
Get()
const
221 return Object !=
nullptr;
227 explicit operator bool()
const =
delete;
240 return Object ==
nullptr;
257template<
typename ObjectType>
263#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
T TNotNull
Definition NotNull.h:307
const bool
Definition NetworkReplayStreaming.h:178
EDefaultConstructNonNullPtr
Definition NonNullPointer.h:16
ObjectType * GetRawPointerOrNull(const TOptional< TNonNullPtr< ObjectType > > &Optional)
Definition NonNullPointer.h:258
#define UE_REQUIRES(...)
Definition Requires.h:86
#define UE_REQUIRES_EXPR(...)
Definition Requires.h:89
uint32 PointerHash(const void *Key)
Definition TypeHash.h:91
Definition Archive.h:1208
Definition NonNullPointer.h:23
ObjectType * Get() const
Definition NonNullPointer.h:190
friend UE_FORCEINLINE_HINT uint32 GetTypeHash(const TNonNullPtr &InPtr)
Definition NonNullPointer.h:247
TNonNullPtr & operator=(ObjectType *InObject)
Definition NonNullPointer.h:91
UE_FORCEINLINE_HINT TNonNullPtr(EDefaultConstructNonNullPtr)
Definition NonNullPointer.h:29
UE_FORCEINLINE_HINT bool operator==(FIntrusiveUnsetOptionalState) const
Definition NonNullPointer.h:238
UE_FORCEINLINE_HINT TNonNullPtr(FIntrusiveUnsetOptionalState)
Definition NonNullPointer.h:234
UE_FORCEINLINE_HINT bool IsInitialized() const
Definition NonNullPointer.h:219
UE_FORCEINLINE_HINT bool operator!=(OtherObjectType *Other) const
Definition NonNullPointer.h:164
UE_FORCEINLINE_HINT bool operator==(const TNonNullPtr &Other) const
Definition NonNullPointer.h:129
TNonNullPtr & operator=(const TNonNullPtr< OtherObjectType > &Other)
Definition NonNullPointer.h:120
UE_FORCEINLINE_HINT TNonNullPtr(TYPE_OF_NULLPTR)
Definition NonNullPointer.h:37
TNonNullPtr & operator=(TYPE_OF_NULLPTR)
Definition NonNullPointer.h:81
UE_FORCEINLINE_HINT bool operator!=(const TNonNullPtr &Other) const
Definition NonNullPointer.h:134
ObjectType & operator*() const
Definition NonNullPointer.h:199
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition NonNullPointer.h:232
TNonNullPtr(ObjectType *InObject)
Definition NonNullPointer.h:46
UE_FORCEINLINE_HINT friend bool operator!=(OtherObjectType *Lhs, const TNonNullPtr &Rhs)
Definition NonNullPointer.h:172
UE_FORCEINLINE_HINT TNonNullPtr(const TNonNullPtr< OtherObjectType > &Other)
Definition NonNullPointer.h:73
ObjectType * operator->() const
Definition NonNullPointer.h:208
UE_FORCEINLINE_HINT bool operator==(OtherObjectType *Other) const
Definition NonNullPointer.h:147
UE_FORCEINLINE_HINT friend bool operator==(OtherObjectType *Lhs, const TNonNullPtr &Rhs)
Definition NonNullPointer.h:155
Definition IntrusiveUnsetOptionalState.h:71
Definition Optional.h:131