C++ Library Extensions 2022.12.09
To help learn modern C++ programming
smarter_ptr< ElementType > Class Template Reference

Public Types

using uptr_t = std::unique_ptr< ElementType >
 
using sptr_t = std::shared_ptr< ElementType >
 
using usptr_t = std::variant< uptr_t, sptr_t >
 

Public Member Functions

 smarter_ptr (ElementType value=ElementType{})
 
 smarter_ptr (const smarter_ptr &)=delete
 
smarter_ptroperator= (const smarter_ptr &)=delete
 
 smarter_ptr (smarter_ptr &&rhs)
 
smarter_ptroperator= (smarter_ptr &&rhs)
 
bool is_unique_ptr ()
 
bool is_shared_ptr ()
 
ElementType * get ()
 
smarter_ptroperator= (ElementType value)
 
smarter_ptrto_shared_ptr ()
 
smarter_ptrto_unique_ptr ()
 

Friends

tpf::sstreamoperator<< (tpf::sstream &os, const smarter_ptr &sp)
 

Detailed Description

template<typename ElementType>
class smarter_ptr< ElementType >

Definition at line 126 of file 06-unique_ptr.cpp.

Member Typedef Documentation

◆ sptr_t

template<typename ElementType >
using smarter_ptr< ElementType >::sptr_t = std::shared_ptr<ElementType>

Definition at line 130 of file 06-unique_ptr.cpp.

◆ uptr_t

template<typename ElementType >
using smarter_ptr< ElementType >::uptr_t = std::unique_ptr<ElementType>

Definition at line 129 of file 06-unique_ptr.cpp.

◆ usptr_t

template<typename ElementType >
using smarter_ptr< ElementType >::usptr_t = std::variant<uptr_t, sptr_t>

Definition at line 131 of file 06-unique_ptr.cpp.

Constructor & Destructor Documentation

◆ smarter_ptr() [1/3]

template<typename ElementType >
smarter_ptr< ElementType >::smarter_ptr ( ElementType  value = ElementType{})
inline

Definition at line 137 of file 06-unique_ptr.cpp.

◆ smarter_ptr() [2/3]

template<typename ElementType >
smarter_ptr< ElementType >::smarter_ptr ( const smarter_ptr< ElementType > &  )
delete

◆ smarter_ptr() [3/3]

template<typename ElementType >
smarter_ptr< ElementType >::smarter_ptr ( smarter_ptr< ElementType > &&  rhs)
inline

Definition at line 144 of file 06-unique_ptr.cpp.

Member Function Documentation

◆ get()

template<typename ElementType >
ElementType * smarter_ptr< ElementType >::get ( )
inline

Definition at line 173 of file 06-unique_ptr.cpp.

◆ is_shared_ptr()

template<typename ElementType >
bool smarter_ptr< ElementType >::is_shared_ptr ( )
inline

Definition at line 165 of file 06-unique_ptr.cpp.

◆ is_unique_ptr()

template<typename ElementType >
bool smarter_ptr< ElementType >::is_unique_ptr ( )
inline

Definition at line 157 of file 06-unique_ptr.cpp.

◆ operator=() [1/3]

template<typename ElementType >
smarter_ptr & smarter_ptr< ElementType >::operator= ( const smarter_ptr< ElementType > &  )
delete

◆ operator=() [2/3]

template<typename ElementType >
smarter_ptr & smarter_ptr< ElementType >::operator= ( ElementType  value)
inline

Definition at line 183 of file 06-unique_ptr.cpp.

◆ operator=() [3/3]

template<typename ElementType >
smarter_ptr & smarter_ptr< ElementType >::operator= ( smarter_ptr< ElementType > &&  rhs)
inline

Definition at line 146 of file 06-unique_ptr.cpp.

◆ to_shared_ptr()

template<typename ElementType >
smarter_ptr & smarter_ptr< ElementType >::to_shared_ptr ( )
inline

Definition at line 203 of file 06-unique_ptr.cpp.

◆ to_unique_ptr()

template<typename ElementType >
smarter_ptr & smarter_ptr< ElementType >::to_unique_ptr ( )
inline

Definition at line 217 of file 06-unique_ptr.cpp.

Friends And Related Function Documentation

◆ operator<<

template<typename ElementType >
tpf::sstream & operator<< ( tpf::sstream os,
const smarter_ptr< ElementType > &  sp 
)
friend

Definition at line 237 of file 06-unique_ptr.cpp.


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