| 295 | const D& get_deleter() const { return data_; } |
| 296 | |
| 297 | void swap(scoped_ptr_impl& p2) { |
| 298 | // Standard swap idiom: 'using std::swap' ensures that std::swap is |
| 299 | // present in the overload set, but we call swap unqualified so that |
| 300 | // any more-specific overloads can be used, if available. |
| 301 | using std::swap; |
| 302 | swap(static_cast<D&>(data_), static_cast<D&>(p2.data_)); |
| 303 | swap(data_.ptr, p2.data_.ptr); |
| 304 | } |
| 305 | |
| 306 | T* release() { |
| 307 | T* old_ptr = data_.ptr; |