From 2f1b1acc7a7ce6d3956fff629acc50e2cc791897 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Tue, 6 May 2008 18:58:15 +0000 Subject: [PATCH] Fix g++ 3.2 regression. [SVN r45177] --- include/boost/detail/sp_convertible.hpp | 12 ++++++++++++ include/boost/intrusive_ptr.hpp | 5 +---- include/boost/shared_ptr.hpp | 5 +---- include/boost/weak_ptr.hpp | 4 ++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/include/boost/detail/sp_convertible.hpp b/include/boost/detail/sp_convertible.hpp index 00463b3..798497c 100644 --- a/include/boost/detail/sp_convertible.hpp +++ b/include/boost/detail/sp_convertible.hpp @@ -17,6 +17,16 @@ #include +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( BOOST_NO_SFINAE ) +# define BOOST_SP_NO_SP_CONVERTIBLE +#endif + +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __GNUC__ ) && ( __GNUC__ * 100 + __GNUC_MINOR__ < 303 ) +# define BOOST_SP_NO_SP_CONVERTIBLE +#endif + +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) + namespace boost { @@ -57,4 +67,6 @@ template< class Y, class T > struct sp_enable_if_convertible: public sp_enable_i } // namespace boost +#endif // !defined( BOOST_SP_NO_SP_CONVERTIBLE ) + #endif // #ifndef BOOST_DETAIL_SP_TYPEINFO_HPP_INCLUDED diff --git a/include/boost/intrusive_ptr.hpp b/include/boost/intrusive_ptr.hpp index 8982fe9..77a603e 100644 --- a/include/boost/intrusive_ptr.hpp +++ b/include/boost/intrusive_ptr.hpp @@ -22,10 +22,7 @@ #include #include - -#if !defined( BOOST_NO_SFINAE ) #include -#endif #include // for std::less @@ -78,7 +75,7 @@ public: #if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES) template -#if !defined( BOOST_NO_SFINAE ) +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) intrusive_ptr( intrusive_ptr const & rhs, typename detail::sp_enable_if_convertible::type = detail::sp_empty() ) diff --git a/include/boost/shared_ptr.hpp b/include/boost/shared_ptr.hpp index 02f2f4f..2c20ecc 100644 --- a/include/boost/shared_ptr.hpp +++ b/include/boost/shared_ptr.hpp @@ -31,10 +31,7 @@ #include #include #include - -#if !defined( BOOST_NO_SFINAE ) #include -#endif #if !defined(BOOST_SP_NO_ATOMIC_ACCESS) #include @@ -228,7 +225,7 @@ public: } template -#if !defined( BOOST_NO_SFINAE ) +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) shared_ptr( shared_ptr const & r, typename detail::sp_enable_if_convertible::type = detail::sp_empty() ) diff --git a/include/boost/weak_ptr.hpp b/include/boost/weak_ptr.hpp index aadb60a..b300813 100644 --- a/include/boost/weak_ptr.hpp +++ b/include/boost/weak_ptr.hpp @@ -61,7 +61,7 @@ public: // template -#if !defined( BOOST_NO_SFINAE ) +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) weak_ptr( weak_ptr const & r, typename detail::sp_enable_if_convertible::type = detail::sp_empty() ) @@ -76,7 +76,7 @@ public: } template -#if !defined( BOOST_NO_SFINAE ) +#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) weak_ptr( shared_ptr const & r, typename detail::sp_enable_if_convertible::type = detail::sp_empty() )