| 1082 | template<class D, class T> D const * basic_get_local_deleter( D const *, shared_ptr<T> const & p ) BOOST_SP_NOEXCEPT; |
| 1083 | |
| 1084 | class esft2_deleter_wrapper |
| 1085 | { |
| 1086 | private: |
| 1087 | |
| 1088 | shared_ptr<void const volatile> deleter_; |
| 1089 | |
| 1090 | public: |
| 1091 | |
| 1092 | esft2_deleter_wrapper() BOOST_SP_NOEXCEPT |
| 1093 | { |
| 1094 | } |
| 1095 | |
| 1096 | template< class T > void set_deleter( shared_ptr<T> const & deleter ) BOOST_SP_NOEXCEPT |
| 1097 | { |
| 1098 | deleter_ = deleter; |
| 1099 | } |
| 1100 | |
| 1101 | template<typename D> D* get_deleter() const BOOST_SP_NOEXCEPT |
| 1102 | { |
| 1103 | return boost::detail::basic_get_deleter<D>( deleter_ ); |
| 1104 | } |
| 1105 | |
| 1106 | template< class T> void operator()( T* ) BOOST_SP_NOEXCEPT_WITH_ASSERT |
| 1107 | { |
| 1108 | BOOST_ASSERT( deleter_.use_count() <= 1 ); |
| 1109 | deleter_.reset(); |
| 1110 | } |
| 1111 | }; |
| 1112 | |
| 1113 | } // namespace detail |
| 1114 | |