UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ObjectPtr.h File Reference

Go to the source code of this file.

Classes

struct  FObjectPtr
 
struct  TObjectPtr< T >
 
struct  TRemoveObjectPointer< T >
 
struct  TRemoveObjectPointer< TObjectPtr< T > >
 
struct  ObjectPtr_Private::TRawPointerType< T >
 
struct  ObjectPtr_Private::TRawPointerType< TObjectPtr< T > >
 
struct  ObjectPtr_Private::TRawPointerType< const TObjectPtr< T > >
 
struct  ObjectPtr_Private::TRawPointerType< volatile TObjectPtr< T > >
 
struct  ObjectPtr_Private::TRawPointerType< const volatile TObjectPtr< T > >
 
struct  ObjectPtr_Private::Friend
 
class  ObjectPtr_Private::TNonAccessTrackedObjectPtr< T >
 
struct  TPrivateObjectPtr< T >
 
struct  TContainerElementTypeCompatibility< TObjectPtr< T > >
 
struct  TContainerElementTypeCompatibility< const TObjectPtr< T > >
 
struct  TIsZeroConstructType< TObjectPtr< T > >
 
struct  TIsBitwiseConstructible< TObjectPtr< T >, T * >
 
struct  TDereferenceWrapper< TObjectPtr< T >, PREDICATE_CLASS >
 
struct  TCallTraits< TObjectPtr< T > >
 
struct  TIsPointerOrObjectPtrToBaseOfImpl< T, DerivedType >
 
struct  TIsPointerOrObjectPtrToBaseOfImpl< T *, DerivedType >
 
struct  TIsPointerOrObjectPtrToBaseOfImpl< TObjectPtr< T >, DerivedType >
 
struct  TIsPointerOrObjectPtrToBaseOf< T, DerivedType >
 
struct  TPointedToTypeImpl< T * >
 
struct  TPointedToTypeImpl< TObjectPtr< T > >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< T >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< TObjectPtr< T > >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< TSet< T > >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< TMap< K, V > >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< TArray< T > >
 
struct  UE::Core::Private::TObjectPtrDecayTypeOf< TNonNullPtr< TObjectPtr< T > > >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< T >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< T * >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< TArrayView< T > >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< TArray< T > >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< TSet< T > >
 
struct  UE::Core::Private::TObjectPtrWrapTypeOf< TMap< K, V > >
 
struct  UE::Core::Private::TMutableViewTraits< T, ViewType >
 
struct  UE::Core::Private::TMutableViewTraits< TObjectPtr< T >, ViewType >
 
struct  UE::Core::Private::TMutableViewTraits< TArray< TObjectPtr< T > >, ViewType >
 
struct  UE::Core::Private::TMutableViewTraits< TSet< TObjectPtr< V > >, ViewType >
 
struct  UE::Core::Private::TMutableViewTraits< TMap< K, V >, ViewType >
 
class  UE::Core::Private::TMutableView< T >
 
class  UE::Core::Private::TMaybeObjectPtr< T >
 
class  TNonNullPtr< TObjectPtr< ObjectType > >
 

Namespaces

namespace  ObjectPtr_Private
 
namespace  UE
 
namespace  UE::Core
 
namespace  UE::Core::Private
 implementation
 
namespace  UE::Core::Private::Unsafe
 

Macros

#define UE_WITH_OBJECT_PTR_DEPRECATIONS   0
 
#define UE_OBJPTR_DEPRECATED(Version, Message)
 
#define UE_OBJECT_PTR_GC_BARRIER   1
 
#define UE_TRANSITIONAL_OBJECT_PTR(Type)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE(Templ, Type)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE_SUFFIXED(Templ, Type, Suffix)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1(Templ, Type1, Type2)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1_SUFFIXED(Templ, Type1, Type2, Suffix)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2(Templ, Type1, Type2)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2_SUFFIXED(Templ, Type1, Type2, Suffix)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH(Templ, Type1, Type2)   auto
 
#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH_SUFFIXED(Templ, Type1, Type2, Suffix)   auto
 
#define UE_OBJECT_PTR_NONCONFORMANCE_SUPPORT   0 UE_DEPRECATED_MACRO(5.6, "UE_OBJECT_PTR_NONCONFORMANCE_SUPPORT has been deprecated and shouldn't be used")
 

Typedefs

template<typename T >
using TPointedToType = typename TPointedToTypeImpl< T >::Type
 
template<typename T >
using TObjectPtrWrapTypeOf = typename UE::Core::Private::TObjectPtrWrapTypeOf< T >::Type
 

Functions

template<typename T >
FORCEINLINE const T * ObjectPtr_Private::CoerceToPointer (const T *Other)
 
template<typename T , typename U >
FORCEINLINE std::common_type_t< const T *, U > ObjectPtr_Private::CoerceToPointer (const U &Other)
 
template<typename T , typename U >
FORCEINLINE auto ObjectPtr_Private::CoerceToPointer (const U &Other) -> decltype(Other.Get())
 
template<typename T , typename U >
bool ObjectPtr_Private::IsObjectPtrEqualToRawPtrOfRelatedType (const TObjectPtr< T > &Ptr, const U *Other)
 
template<typename T , typename U , decltype(CoerceToPointer< T >(std::declval< U >())==std::declval< const T * >()) * = nullptr>
bool ObjectPtr_Private::IsObjectPtrEqual (const TObjectPtr< T > &Ptr, const U &Other)
 
template<typename T >
FORCEINLINE bool ObjectPtr_Private::IsObjectPtrNull (const FObjectPtr &ObjectPtr)
 
template<typename T >
FORCEINLINE T * ObjectPtr_Private::Get (const FObjectPtr &ObjectPtr)
 
template<typename T , int = sizeof(T)>
char(& ObjectPtr_Private::ResolveTypeIsComplete (int))[2]
 
template<typename T >
char(& ObjectPtr_Private::ResolveTypeIsComplete (...))[1]
 
template<typename T >
FORCEINLINE uint32 GetTypeHash (const TObjectPtr< T > &InObjectPtr)
 
template<typename T >
FORCEINLINE FArchiveoperator<< (FArchive &Ar, TObjectPtr< T > &InObjectPtr)
 
template<typename T >
FORCEINLINE void operator<< (FStructuredArchiveSlot Slot, TObjectPtr< T > &InObjectPtr)
 
template<typename T >
TPrivateObjectPtr< T > MakeObjectPtrUnsafe (const UObject *Obj)
 
template<typename T >
TObjectPtr< T > ToObjectPtr (T *Obj)
 
template<typename T >
FORCEINLINE T * ToRawPtr (const TObjectPtr< T > &Ptr)
 
template<typename T >
FORCEINLINE T * ToRawPtr (T *Ptr)
 
template<typename T , SIZE_T Size>
 UE_DEPRECATED (5.6, "Mutable ToRawPtrArrayUnsafe() is deprecated. Use MutableView() or TArray<TObjectPtr<...>> instead.") FORCEINLINE T **ToRawPtrArrayUnsafe(TObjectPtr< T >(&ArrayOfPtr)[Size])
 
template<typename T , SIZE_T Size>
FORCEINLINE const T *const * ToRawPtrArray (const TObjectPtr< T >(&ArrayOfPtr)[Size])
 
template<typename T >
FORCEINLINE T ** ToRawPtrArrayUnsafe (T **ArrayOfPtr)
 
template<typename ArrayType , typename ArrayTypeNoRef = std::remove_reference_t<ArrayType>>
PRAGMA_DISABLE_DEPRECATION_WARNINGS UE_DEPRECATED (5.6, "Mutable ToRawPtrTArrayUnsafe() is deprecated. Use MutableView() or TArray<TObjectPtr<...>> instead.") decltype(auto) ToRawPtrTArrayUnsafe(ArrayType &&Array)
 
template<typename T >
FORCEINLINE TWeakObjectPtr< T > MakeWeakObjectPtr (TObjectPtr< T > Ptr)
 
template<typename T >
void Swap (TObjectPtr< T > &A, T *&B)
 
template<typename T >
void Swap (T *&A, TObjectPtr< T > &B)
 
template<typename T >
void Swap (TArray< TObjectPtr< T > > &A, TArray< T * > &B)
 
template<typename T >
void Swap (TArray< T * > &A, TArray< TObjectPtr< T > > &B)
 
template<typename T >
void Exchange (TObjectPtr< T > &A, T *&B)
 
template<typename T >
void Exchange (T *&A, TObjectPtr< T > &B)
 
template<typename T >
void Exchange (TArray< TObjectPtr< T > > &A, TArray< T * > &B)
 
template<typename T >
void Exchange (TArray< T * > &A, TArray< TObjectPtr< T > > &B)
 
template<typename T >
T * GetValid (const TObjectPtr< T > &Test)
 
template<typename T , typename DecayTraits = UE::Core::Private::TObjectPtrDecayTypeOf<T>, typename U = typename DecayTraits::Type>
U & UE::Core::Private::Unsafe::Decay (T &A)
 
template<typename T >
decltype(autoMutableView (T &A)
 
template<typename T >
decltype(autoToRawPtr (const UE::Core::Private::TMutableView< T > &X)
 
template<typename T , typename DecayTraits = typename UE::Core::Private::TObjectPtrDecayTypeOf<T>, typename U = typename DecayTraits::Type>
const U & ObjectPtrDecay (const T &Value)
 
template<typename T , typename U = typename UE::Core::Private::TObjectPtrWrapTypeOf<T>::Type>
U & ObjectPtrWrap (T &Value)
 
template<typename T , typename U = typename UE::Core::Private::TObjectPtrWrapTypeOf<T>::Type>
const U & ObjectPtrWrap (const T &Value)
 
template<typename To , typename From >
FORCEINLINE To * StaticCastPtr (const TObjectPtr< From > &P)
 
template<typename T >
FORCEINLINE decltype(autoConstCast (const TObjectPtr< T > &P)
 

Variables

PRAGMA_ENABLE_DEPRECATION_WARNINGS constexpr auto TContainerElementTypeCompatibility_DefaultOperatorFunc = [](auto& InIt) -> decltype(auto) { return *InIt; }
 

Macro Definition Documentation

◆ UE_OBJECT_PTR_GC_BARRIER

#define UE_OBJECT_PTR_GC_BARRIER   1

◆ UE_OBJECT_PTR_NONCONFORMANCE_SUPPORT

#define UE_OBJECT_PTR_NONCONFORMANCE_SUPPORT   0 UE_DEPRECATED_MACRO(5.6, "UE_OBJECT_PTR_NONCONFORMANCE_SUPPORT has been deprecated and shouldn't be used")

◆ UE_OBJPTR_DEPRECATED

#define UE_OBJPTR_DEPRECATED (   Version,
  Message 
)

◆ UE_TRANSITIONAL_OBJECT_PTR

#define UE_TRANSITIONAL_OBJECT_PTR (   Type)    auto

Wrapper macro for use in places where code needs to allow for a pointer type that could be a TObjectPtr<T> or a raw object pointer during a transitional period. The coding standard disallows general use of the auto keyword, but in wrapping it in this macro, we have a record of the explicit type meant to be used, and an avenue to go back and change these instances to an explicit TObjectPtr<T> after the transition is complete and the type won't be toggling back and forth anymore.

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE (   Templ,
  Type 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1 (   Templ,
  Type1,
  Type2 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1_SUFFIXED

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG1_SUFFIXED (   Templ,
  Type1,
  Type2,
  Suffix 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2 (   Templ,
  Type1,
  Type2 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2_SUFFIXED

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG2_SUFFIXED (   Templ,
  Type1,
  Type2,
  Suffix 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH (   Templ,
  Type1,
  Type2 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH_SUFFIXED

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE2_ARG_BOTH_SUFFIXED (   Templ,
  Type1,
  Type2,
  Suffix 
)    auto

◆ UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE_SUFFIXED

#define UE_TRANSITIONAL_OBJECT_PTR_TEMPLATE_SUFFIXED (   Templ,
  Type,
  Suffix 
)    auto

◆ UE_WITH_OBJECT_PTR_DEPRECATIONS

#define UE_WITH_OBJECT_PTR_DEPRECATIONS   0

Typedef Documentation

◆ TObjectPtrWrapTypeOf

◆ TPointedToType

template<typename T >
using TPointedToType = typename TPointedToTypeImpl<T>::Type

Function Documentation

◆ ConstCast()

template<typename T >
FORCEINLINE decltype(auto) ConstCast ( const TObjectPtr< T > &  P)

◆ Exchange() [1/4]

template<typename T >
void Exchange ( T *&  A,
TObjectPtr< T > &  B 
)
inline

◆ Exchange() [2/4]

template<typename T >
void Exchange ( TArray< T * > &  A,
TArray< TObjectPtr< T > > &  B 
)
inline

◆ Exchange() [3/4]

template<typename T >
void Exchange ( TArray< TObjectPtr< T > > &  A,
TArray< T * > &  B 
)
inline

Exchange variants between TArray<TObjectPtr<T>> and TArray<T*>

◆ Exchange() [4/4]

template<typename T >
void Exchange ( TObjectPtr< T > &  A,
T *&  B 
)
inline

Exchange variants between TObjectPtr<T> and raw pointer to T

◆ GetTypeHash()

template<typename T >
FORCEINLINE uint32 GetTypeHash ( const TObjectPtr< T > &  InObjectPtr)

◆ GetValid()

template<typename T >
T * GetValid ( const TObjectPtr< T > &  Test)

Returns a pointer to a valid object if the Test object passes IsValid() tests, otherwise null

◆ MakeObjectPtrUnsafe()

template<typename T >
TPrivateObjectPtr< T > MakeObjectPtrUnsafe ( const UObject Obj)

Used to allow the caller to provide a pointer to an incomplete type of T that has explicitly cast to a UObject.

◆ MakeWeakObjectPtr()

template<typename T >
FORCEINLINE TWeakObjectPtr< T > MakeWeakObjectPtr ( TObjectPtr< T >  Ptr)

◆ MutableView()

template<typename T >
decltype(auto) MutableView ( T &  A)

◆ ObjectPtrDecay()

template<typename T , typename DecayTraits = typename UE::Core::Private::TObjectPtrDecayTypeOf<T>, typename U = typename DecayTraits::Type>
const U & ObjectPtrDecay ( const T &  Value)

◆ ObjectPtrWrap() [1/2]

template<typename T , typename U = typename UE::Core::Private::TObjectPtrWrapTypeOf<T>::Type>
const U & ObjectPtrWrap ( const T &  Value)

◆ ObjectPtrWrap() [2/2]

template<typename T , typename U = typename UE::Core::Private::TObjectPtrWrapTypeOf<T>::Type>
U & ObjectPtrWrap ( T &  Value)

◆ operator<<() [1/2]

template<typename T >
FORCEINLINE FArchive & operator<< ( FArchive Ar,
TObjectPtr< T > &  InObjectPtr 
)

◆ operator<<() [2/2]

template<typename T >
FORCEINLINE void operator<< ( FStructuredArchiveSlot  Slot,
TObjectPtr< T > &  InObjectPtr 
)

◆ StaticCastPtr()

template<typename To , typename From >
FORCEINLINE To * StaticCastPtr ( const TObjectPtr< From > &  P)

◆ Swap() [1/4]

template<typename T >
void Swap ( T *&  A,
TObjectPtr< T > &  B 
)
inline

◆ Swap() [2/4]

template<typename T >
void Swap ( TArray< T * > &  A,
TArray< TObjectPtr< T > > &  B 
)
inline

◆ Swap() [3/4]

template<typename T >
void Swap ( TArray< TObjectPtr< T > > &  A,
TArray< T * > &  B 
)
inline

Swap variants between TArray<TObjectPtr<T>> and TArray<T*>

◆ Swap() [4/4]

template<typename T >
void Swap ( TObjectPtr< T > &  A,
T *&  B 
)
inline

Swap variants between TObjectPtr<T> and raw pointer to T

◆ ToObjectPtr()

template<typename T >
TObjectPtr< T > ToObjectPtr ( T *  Obj)

◆ ToRawPtr() [1/3]

template<typename T >
FORCEINLINE T * ToRawPtr ( const TObjectPtr< T > &  Ptr)

◆ ToRawPtr() [2/3]

template<typename T >
decltype(auto) ToRawPtr ( const UE::Core::Private::TMutableView< T > &  X)

◆ ToRawPtr() [3/3]

template<typename T >
FORCEINLINE T * ToRawPtr ( T *  Ptr)

◆ ToRawPtrArray()

template<typename T , SIZE_T Size>
FORCEINLINE const T *const * ToRawPtrArray ( const TObjectPtr< T >(&)  ArrayOfPtr[Size])

◆ ToRawPtrArrayUnsafe()

template<typename T >
FORCEINLINE T ** ToRawPtrArrayUnsafe ( T **  ArrayOfPtr)

◆ UE_DEPRECATED() [1/2]

template<typename T , SIZE_T Size>
UE_DEPRECATED ( 5.  6,
"Mutable ToRawPtrArrayUnsafe() is deprecated. Use MutableView() or TArray<TObjectPtr<...>> instead."   
) )[Size] &

◆ UE_DEPRECATED() [2/2]

template<typename ArrayType , typename ArrayTypeNoRef = std::remove_reference_t<ArrayType>>
PRAGMA_DISABLE_DEPRECATION_WARNINGS UE_DEPRECATED ( 5.  6,
"Mutable ToRawPtrTArrayUnsafe() is deprecated. Use MutableView() or TArray<TObjectPtr<...>> instead."   
) &&

Variable Documentation

◆ TContainerElementTypeCompatibility_DefaultOperatorFunc

PRAGMA_ENABLE_DEPRECATION_WARNINGS constexpr auto TContainerElementTypeCompatibility_DefaultOperatorFunc = [](auto& InIt) -> decltype(auto) { return *InIt; }
inlineconstexpr