CommonLibVR
RE::NiPointer< T > Class Template Reference

#include <NiSmartPointer.h>

Public Types

using element_type = T
 

Public Member Functions

constexpr NiPointer () noexcept=default
 
constexpr NiPointer (std::nullptr_t) noexcept
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 NiPointer (Y *a_rhs)
 
 NiPointer (const NiPointer &a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 NiPointer (const NiPointer< Y > &a_rhs)
 
 NiPointer (NiPointer &&a_rhs) noexcept
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
 NiPointer (NiPointer< Y > &&a_rhs) noexcept
 
 ~NiPointer ()
 
NiPointeroperator= (const NiPointer &a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
NiPointeroperator= (const NiPointer< Y > &a_rhs)
 
NiPointeroperator= (NiPointer &&a_rhs)
 
template<class Y , std::enable_if_t< std::is_convertible_v< Y *, element_type * >, int > = 0>
NiPointeroperator= (NiPointer< 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 { nullptr }
 

Friends

template<class >
class NiPointer
 

Member Typedef Documentation

◆ element_type

template<class T >
using RE::NiPointer< T >::element_type = T

Constructor & Destructor Documentation

◆ NiPointer() [1/7]

template<class T >
constexpr RE::NiPointer< T >::NiPointer ( )
constexprdefaultnoexcept

◆ NiPointer() [2/7]

template<class T >
constexpr RE::NiPointer< T >::NiPointer ( std::nullptr_t  )
inlineconstexprnoexcept

◆ NiPointer() [3/7]

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

◆ NiPointer() [4/7]

template<class T >
RE::NiPointer< T >::NiPointer ( const NiPointer< T > &  a_rhs)
inline

◆ NiPointer() [5/7]

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

◆ NiPointer() [6/7]

template<class T >
RE::NiPointer< T >::NiPointer ( NiPointer< T > &&  a_rhs)
inlinenoexcept

◆ NiPointer() [7/7]

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

◆ ~NiPointer()

template<class T >
RE::NiPointer< T >::~NiPointer ( )
inline

Member Function Documentation

◆ get()

template<class T >
constexpr element_type* RE::NiPointer< T >::get ( ) const
inlineconstexprnoexcept

◆ operator bool()

template<class T >
constexpr RE::NiPointer< T >::operator bool ( ) const
inlineexplicitconstexprnoexcept

◆ operator*()

template<class T >
constexpr element_type& RE::NiPointer< T >::operator* ( ) const
inlineconstexprnoexcept

◆ operator->()

template<class T >
constexpr element_type* RE::NiPointer< T >::operator-> ( ) const
inlineconstexprnoexcept

◆ operator=() [1/4]

template<class T >
NiPointer& RE::NiPointer< T >::operator= ( const NiPointer< T > &  a_rhs)
inline

◆ operator=() [2/4]

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

◆ operator=() [3/4]

template<class T >
NiPointer& RE::NiPointer< T >::operator= ( NiPointer< T > &&  a_rhs)
inline

◆ operator=() [4/4]

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

◆ reset() [1/2]

template<class T >
void RE::NiPointer< T >::reset ( )
inline

◆ reset() [2/2]

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

◆ TryAttach()

template<class T >
void RE::NiPointer< T >::TryAttach ( )
inlineprotected

◆ TryDetach()

template<class T >
void RE::NiPointer< T >::TryDetach ( )
inlineprotected

Friends And Related Function Documentation

◆ NiPointer

template<class T >
template<class >
friend class NiPointer
friend

Member Data Documentation

◆ _ptr

template<class T >
element_type* RE::NiPointer< T >::_ptr { nullptr }
protected

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