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

Go to the source code of this file.

Classes

struct  UE::Core::Private::PimplPtr::TPimplHeapObjectImpl< T >
 
struct  TPimplPtr< T, EPimplPtrMode::NoCopy >
 
struct  TPimplPtr< T, EPimplPtrMode::DeepCopy >
 

Namespaces

namespace  UE
 
namespace  UE::Core
 
namespace  UE::Core::Private
 implementation
 
namespace  UE::Core::Private::PimplPtr
 

Typedefs

using UE::Core::Private::PimplPtr::FDeleteFunc = void(*)(void *)
 
using UE::Core::Private::PimplPtr::FCopyFunc = void *(*)(void *)
 

Enumerations

enum class  EPimplPtrMode : uint8 { NoCopy , DeepCopy }
 

Functions

template<typename T >
void UE::Core::Private::PimplPtr::DeleterFunc (void *Ptr)
 
void UE::Core::Private::PimplPtr::CallDeleter (void *Ptr)
 
voidUE::Core::Private::PimplPtr::CallCopier (void *Ptr)
 
template<typename T , EPimplPtrMode Mode>
UE_FORCEINLINE_HINT bool operator== (TYPE_OF_NULLPTR, const TPimplPtr< T, Mode > &Ptr)
 
template<typename T , EPimplPtrMode Mode>
UE_FORCEINLINE_HINT bool operator!= (TYPE_OF_NULLPTR, const TPimplPtr< T, Mode > &Ptr)
 
template<typename T , EPimplPtrMode Mode = EPimplPtrMode::NoCopy, typename... ArgTypes>
TPimplPtr< T, Mode > MakePimpl (ArgTypes &&... Args)
 

Variables

constexpr SIZE_T UE::Core::Private::PimplPtr::RequiredAlignment = 16
 

Enumeration Type Documentation

◆ EPimplPtrMode

enum class EPimplPtrMode : uint8
strong

Specifies the copy mode for TPimplPtr

Enumerator
NoCopy 

Don't support copying (default)

DeepCopy 

Support deep copying, including of forward declared types

Function Documentation

◆ MakePimpl()

template<typename T , EPimplPtrMode Mode = EPimplPtrMode::NoCopy, typename... ArgTypes>
TPimplPtr< T, Mode > MakePimpl ( ArgTypes &&...  Args)
inline

Heap-allocates an instance of T with the given arguments and returns it as a TPimplPtr.

Usage: TPimplPtr<FMyType> MyPtr = MakePimpl<FMyType>(...arguments...);

DeepCopy Usage: TPimplPtr<FMyType, EPimplPtrMode::DeepCopy> MyPtr = MakePimpl<FMyType, EPimplPtrMode::DeepCopy>(...arguments...);

◆ operator!=()

template<typename T , EPimplPtrMode Mode>
UE_FORCEINLINE_HINT bool operator!= ( TYPE_OF_NULLPTR  ,
const TPimplPtr< T, Mode > &  Ptr 
)

◆ operator==()

template<typename T , EPimplPtrMode Mode>
UE_FORCEINLINE_HINT bool operator== ( TYPE_OF_NULLPTR  ,
const TPimplPtr< T, Mode > &  Ptr 
)