From 4b0490c0ae03c03a4f6793b012dfdaa399d36c6e Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 7 May 2008 10:15:16 +0000 Subject: [PATCH] Fix sp_convertible_test.cpp failure in C++0x mode. [SVN r45194] --- include/boost/shared_ptr.hpp | 12 ++++++++++-- test/sp_convertible_test.cpp | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/boost/shared_ptr.hpp b/include/boost/shared_ptr.hpp index 2c20ecc..3bf00b1 100644 --- a/include/boost/shared_ptr.hpp +++ b/include/boost/shared_ptr.hpp @@ -349,7 +349,16 @@ public: } template - shared_ptr( shared_ptr && r ): px( r.px ), pn() // never throws +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) + + shared_ptr( shared_ptr && r, typename detail::sp_enable_if_convertible::type = detail::sp_empty() ) + +#else + + shared_ptr( shared_ptr && r ) + +#endif + : px( r.px ), pn() // never throws { pn.swap( r.pn ); r.px = 0; @@ -772,7 +781,6 @@ template D * get_deleter( shared_ptr const & p ) #endif } - return del; } diff --git a/test/sp_convertible_test.cpp b/test/sp_convertible_test.cpp index 165d55f..7f49e1f 100644 --- a/test/sp_convertible_test.cpp +++ b/test/sp_convertible_test.cpp @@ -59,7 +59,12 @@ int g( boost::shared_ptr ) int main() { + boost::shared_ptr p1; + BOOST_TEST( 1 == f( p1 ) ); BOOST_TEST( 1 == f( boost::shared_ptr() ) ); + + boost::shared_ptr p2; + BOOST_TEST( 4 == g( p2 ) ); BOOST_TEST( 4 == g( boost::shared_ptr() ) ); return boost::report_errors();