Fix g++ 3.2 regression.

[SVN r45177]
This commit is contained in:
Peter Dimov
2008-05-06 18:58:15 +00:00
parent f0f9f72be6
commit 2f1b1acc7a
4 changed files with 16 additions and 10 deletions

View File

@ -17,6 +17,16 @@
#include <boost/config.hpp>
#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

View File

@ -22,10 +22,7 @@
#include <boost/assert.hpp>
#include <boost/detail/workaround.hpp>
#if !defined( BOOST_NO_SFINAE )
#include <boost/detail/sp_convertible.hpp>
#endif
#include <functional> // for std::less
@ -78,7 +75,7 @@ public:
#if !defined(BOOST_NO_MEMBER_TEMPLATES) || defined(BOOST_MSVC6_MEMBER_TEMPLATES)
template<class U>
#if !defined( BOOST_NO_SFINAE )
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
intrusive_ptr( intrusive_ptr<U> const & rhs, typename detail::sp_enable_if_convertible<U,T>::type = detail::sp_empty() )

View File

@ -31,10 +31,7 @@
#include <boost/throw_exception.hpp>
#include <boost/detail/shared_count.hpp>
#include <boost/detail/workaround.hpp>
#if !defined( BOOST_NO_SFINAE )
#include <boost/detail/sp_convertible.hpp>
#endif
#if !defined(BOOST_SP_NO_ATOMIC_ACCESS)
#include <boost/detail/spinlock_pool.hpp>
@ -228,7 +225,7 @@ public:
}
template<class Y>
#if !defined( BOOST_NO_SFINAE )
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
shared_ptr( shared_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )

View File

@ -61,7 +61,7 @@ public:
//
template<class Y>
#if !defined( BOOST_NO_SFINAE )
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
weak_ptr( weak_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )
@ -76,7 +76,7 @@ public:
}
template<class Y>
#if !defined( BOOST_NO_SFINAE )
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE )
weak_ptr( shared_ptr<Y> const & r, typename detail::sp_enable_if_convertible<Y,T>::type = detail::sp_empty() )