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;
79 ptr_type
get() {
return _p; }
82 const_ptr_type
get()
const {
return _p; }
110 delete_policy::del(_p);
119 operator ptr_type() {
return _p; }
122 operator const_ptr_type()
const {
return _p; }
125 operator ref_type() {
return *_p; }
128 operator const_ref_type()
const {
return *_p; }
131 operator bool()
const {
return _p !=
nullptr; }
151 template <
typename T>
155 template <
typename T>
158 #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.hpp:137
smart_ptr(smart_ptr< T > &&other)
Move copy constructor.
Definition: smart_ptr.hpp:57
void clear()
Dissociates a previously set pointer value, deleting it at the same time.
Definition: smart_ptr.hpp:101
Delete policy using free() to delete objects.
Definition: smart_ptr.hpp:23
ptr_type operator->()
Another operator to allow you to treat the object just like a pointer.
Definition: smart_ptr.hpp:134
ptr_type _p
The wrapped pointer.
Definition: smart_ptr.hpp:141
smart_ptr()
Default constructor. Initializes with no pointer set.
Definition: smart_ptr.hpp:51
Delete policy for arrays.
Definition: smart_ptr.hpp:30
Simple, standard smart pointer class.
Definition: smart_ptr.hpp:41
smart_ptr< T > & operator=(ptr_type p)
To allow setting the pointer directly. Equivalent to a call to set().
Definition: smart_ptr.hpp:68
virtual ~smart_ptr()
Definition: smart_ptr.hpp:76
smart_ptr< T > & operator=(smart_ptr< T > &&other)
Move assignment operator.
Definition: smart_ptr.hpp:60
Delete policy for regular objects.
Definition: smart_ptr.hpp:16
void reset()
Dissociates any previously set pointer value without deleting it.
Definition: smart_ptr.hpp:98
smart_ptr(ptr_type p)
This constructor takes a pointer to the object to be deleted.
Definition: smart_ptr.hpp:54
virtual void safe_delete()
Definition: smart_ptr.hpp:106