default_delete
must be defined in the std namespace, and it should specialize in objects from the std namespace.
namespace std {
template<class T> struct default_delete;
template<class T> struct default_delete<T[]>;
, std::default_delete
UB. ( . ).
, shared_ptr
default_delete
.
~ Shared_ptr();
:
- * shared_ptr (use_count() > 1),
.
- , * p d, d (p) .
- * p, p.