9 #if !defined(_smart_ptr_h_) 18 static inline void del(T *v) {
delete v; }
25 static inline void del(T *v) { free(v); }
32 static inline void del(T *v) {
delete[] v; }
40 template <
typename T,
class delete_policy = smart_ptr_delete<T> >
46 typedef const T *const_ptr_type;
48 typedef const T &const_ref_type;
82 ptr_type
get() {
return _p; }
85 const_ptr_type
get()
const {
return _p; }
113 delete_policy::del(_p);
122 operator ptr_type() {
return _p; }
125 operator const_ptr_type()
const {
return _p; }
128 operator ref_type() {
return *_p; }
131 operator const_ref_type()
const {
return *_p; }
134 operator bool()
const {
return _p !=
nullptr; }
161 template <
typename T>
165 template <
typename T>
168 #endif // _smart_ptr_h_ const_ptr_type operator->() const
Another operator to allow you to treat the object just like a pointer.
Definition: smart_ptr.h:147
smart_ptr(smart_ptr< T > &&other)
Move copy constructor.
Definition: smart_ptr.h:63
void clear()
Dissociates a previously set pointer value, deleting it at the same time.
Definition: smart_ptr.h:104
Delete policy using free() to delete objects.
Definition: smart_ptr.h:23
ptr_type operator->()
Another operator to allow you to treat the object just like a pointer.
Definition: smart_ptr.h:144
ptr_type _p
The wrapped pointer.
Definition: smart_ptr.h:151
smart_ptr()
Default constructor. Initializes with no pointer set.
Definition: smart_ptr.h:51
Delete policy for arrays.
Definition: smart_ptr.h:30
Simple, standard smart pointer class.
Definition: smart_ptr.h:41
smart_ptr< T > & operator=(ptr_type p)
To allow setting the pointer directly. Equivalent to a call to set().
Definition: smart_ptr.h:137
virtual ~smart_ptr()
Definition: smart_ptr.h:79
smart_ptr< T > & operator=(smart_ptr< T > &&other)
Move assignment operator.
Definition: smart_ptr.h:70
Delete policy for regular objects.
Definition: smart_ptr.h:16
void reset()
Dissociates any previously set pointer value without deleting it.
Definition: smart_ptr.h:101
smart_ptr(ptr_type p)
This constructor takes a pointer to the object to be deleted.
Definition: smart_ptr.h:57
virtual void safe_delete()
Definition: smart_ptr.h:109