| 139 | } |
| 140 | |
| 141 | template<class Y> explicit shared_count( Y * p ): pi_( 0 ) |
| 142 | #if defined(BOOST_SP_ENABLE_DEBUG_HOOKS) |
| 143 | , id_(shared_count_id) |
| 144 | #endif |
| 145 | { |
| 146 | #ifndef BOOST_NO_EXCEPTIONS |
| 147 | |
| 148 | try |
| 149 | { |
| 150 | pi_ = new sp_counted_impl_p<Y>( p ); |
| 151 | } |
| 152 | catch(...) |
| 153 | { |
| 154 | boost::checked_delete( p ); |
| 155 | throw; |
| 156 | } |
| 157 | |
| 158 | #else |
| 159 | |
| 160 | pi_ = new sp_counted_impl_p<Y>( p ); |
| 161 | |
| 162 | if( pi_ == 0 ) |
| 163 | { |
| 164 | boost::checked_delete( p ); |
| 165 | boost::throw_exception( std::bad_alloc() ); |
| 166 | } |
| 167 | |
| 168 | #endif |
| 169 | } |
| 170 | |
| 171 | #if defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, <= 1200 ) |
| 172 | template<class Y, class D> shared_count( Y * p, D d ): pi_(0) |
no test coverage detected