CommonLibSSE (Parapets fork)
RE::BSTSmartPointer< T, RefManager > Class Template Reference

#include <BSTSmartPointer.h>

Public Types

using element_type = T
 
using reference_manager = RefManager< T >
 

Public Member Functions

constexpr BSTSmartPointer () noexcept
 
constexpr BSTSmartPointer (std::nullptr_t) noexcept
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 BSTSmartPointer (Y *a_rhs)
 
 BSTSmartPointer (const BSTSmartPointer &a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 BSTSmartPointer (const BSTSmartPointer< Y > &a_rhs)
 
 BSTSmartPointer (BSTSmartPointer &&a_rhs) noexcept
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 BSTSmartPointer (BSTSmartPointer< Y > &&a_rhs) noexcept
 
 ~BSTSmartPointer ()
 
BSTSmartPointeroperator= (const BSTSmartPointer &a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
BSTSmartPointeroperator= (const BSTSmartPointer< Y > &a_rhs)
 
BSTSmartPointeroperator= (BSTSmartPointer &&a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
BSTSmartPointeroperator= (BSTSmartPointer< Y > &&a_rhs)
 
void reset ()
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
void reset (Y *a_ptr)
 
constexpr element_typeget () const noexcept
 
constexpr operator bool () const noexcept
 
constexpr element_typeoperator* () const noexcept
 
constexpr element_typeoperator-> () const noexcept
 

Protected Member Functions

void TryAttach ()
 
void TryDetach ()
 

Protected Attributes

element_type_ptr
 

Friends

template<class , template< class > class>
class BSTSmartPointer
 

Member Typedef Documentation

◆ element_type

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
using RE::BSTSmartPointer< T, RefManager >::element_type = T

◆ reference_manager

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
using RE::BSTSmartPointer< T, RefManager >::reference_manager = RefManager<T>

Constructor & Destructor Documentation

◆ BSTSmartPointer() [1/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( )
inlineconstexprnoexcept

◆ BSTSmartPointer() [2/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( std::nullptr_t  )
inlineconstexprnoexcept

◆ BSTSmartPointer() [3/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( Y *  a_rhs)
inlineexplicit

◆ BSTSmartPointer() [4/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( const BSTSmartPointer< T, RefManager > &  a_rhs)
inline

◆ BSTSmartPointer() [5/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( const BSTSmartPointer< Y > &  a_rhs)
inline

◆ BSTSmartPointer() [6/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( BSTSmartPointer< T, RefManager > &&  a_rhs)
inlinenoexcept

◆ BSTSmartPointer() [7/7]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
RE::BSTSmartPointer< T, RefManager >::BSTSmartPointer ( BSTSmartPointer< Y > &&  a_rhs)
inlinenoexcept

◆ ~BSTSmartPointer()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
RE::BSTSmartPointer< T, RefManager >::~BSTSmartPointer ( )
inline

Member Function Documentation

◆ get()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr element_type* RE::BSTSmartPointer< T, RefManager >::get ( ) const
inlineconstexprnoexcept

◆ operator bool()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr RE::BSTSmartPointer< T, RefManager >::operator bool ( ) const
inlineexplicitconstexprnoexcept

◆ operator*()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr element_type& RE::BSTSmartPointer< T, RefManager >::operator* ( ) const
inlineconstexprnoexcept

◆ operator->()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
constexpr element_type* RE::BSTSmartPointer< T, RefManager >::operator-> ( ) const
inlineconstexprnoexcept

◆ operator=() [1/4]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
BSTSmartPointer& RE::BSTSmartPointer< T, RefManager >::operator= ( BSTSmartPointer< T, RefManager > &&  a_rhs)
inline

◆ operator=() [2/4]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
BSTSmartPointer& RE::BSTSmartPointer< T, RefManager >::operator= ( BSTSmartPointer< Y > &&  a_rhs)
inline

◆ operator=() [3/4]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
BSTSmartPointer& RE::BSTSmartPointer< T, RefManager >::operator= ( const BSTSmartPointer< T, RefManager > &  a_rhs)
inline

◆ operator=() [4/4]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
BSTSmartPointer& RE::BSTSmartPointer< T, RefManager >::operator= ( const BSTSmartPointer< Y > &  a_rhs)
inline

◆ reset() [1/2]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
void RE::BSTSmartPointer< T, RefManager >::reset ( )
inline

◆ reset() [2/2]

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
void RE::BSTSmartPointer< T, RefManager >::reset ( Y *  a_ptr)
inline

◆ TryAttach()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
void RE::BSTSmartPointer< T, RefManager >::TryAttach ( )
inlineprotected

◆ TryDetach()

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
void RE::BSTSmartPointer< T, RefManager >::TryDetach ( )
inlineprotected

Friends And Related Function Documentation

◆ BSTSmartPointer

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
template<class , template< class > class>
friend class BSTSmartPointer
friend

Member Data Documentation

◆ _ptr

template<class T , template< class > class RefManager = BSTSmartPointerIntrusiveRefCount>
element_type* RE::BSTSmartPointer< T, RefManager >::_ptr
protected

The documentation for this class was generated from the following file: