diff --git a/include/boost/shared_ptr.hpp b/include/boost/shared_ptr.hpp index b8072ba..ec38248 100644 --- a/include/boost/shared_ptr.hpp +++ b/include/boost/shared_ptr.hpp @@ -313,26 +313,26 @@ public: shared_ptr( shared_ptr && r ): px( r.px ), pn() // never throws { pn.swap( r.pn ); + r.px = 0; } template shared_ptr( shared_ptr && r ): px( r.px ), pn() // never throws { pn.swap( r.pn ); + r.px = 0; } shared_ptr & operator=( shared_ptr && r ) // never throws { - px = r.px; - pn.swap( r.pn ); + this_type( static_cast< shared_ptr && >( r ) ).swap( *this ); return *this; } template shared_ptr & operator=( shared_ptr && r ) // never throws { - px = r.px; - pn.swap( r.pn ); + this_type( static_cast< shared_ptr && >( r ) ).swap( *this ); return *this; }