Overview
default_delete is a functor object. aka deleter object used by smart pointers to recycle the resources.
Details
default_delete is a functor object. aka deleter object. It's provided by std library to delete the resources managed by the smartpointers when it's destroyed. It can be used to delete both a array type or pointer type resource. The smartpointers can also provide a custom deleter object.
Syntax
template <class T> class default_delete //specialization for arrays template <class T> class default_delete<T[]>
Constructors
Name | Description |
---|---|
default_delete() | Default constructor. Does nothing. |
template <class U, class = typename enable_if<is_convertible<U*,T*>::value>::type> default_delete (const default_delete<U>& del) | Constructs a default_delete<T> object from another default_delete object. This overload participates in overload resolution only if U* is implicitly convertible to T*. Example unique_ptr<int> (new int, default_delete<int>()); |
template <class U, class = typename enable_if<is_convertible<U*[],T*[]>::value>::type> default_delete (const default_delete<U[]>& del) | Same as above except specialization for []. Example unique_ptr<int[]> (new int[10], default_delete<int[]>()); |
Methods
Name | Description |
---|---|
void operator() (T* ptr) | The default_delete<T> internally calls delete ptr. However this can be overridden by a specialization for a different operation as shown below. Example template<> struct std::default_delete<FILE> { void operator()(FILE *fp) { fclose(fp); } }; FILE *fp = fopen("a.txt", "wt"); unique_ptr<FILE> ufp(fp); |
template< class U > void operator() ( U* ptr) | Array specialization. Calls delete delete[] ptr. |
No comments:
Post a Comment