forked from boostorg/smart_ptr
Revert "SmartPointer: Remove obsolete GCC version checks."
This reverts commit 0e6ddb843e
.
This commit is contained in:
@ -21,6 +21,10 @@
|
|||||||
# define BOOST_SP_NO_SP_CONVERTIBLE
|
# define BOOST_SP_NO_SP_CONVERTIBLE
|
||||||
#endif
|
#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 ) && defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x630 )
|
#if !defined( BOOST_SP_NO_SP_CONVERTIBLE ) && defined( __BORLANDC__ ) && ( __BORLANDC__ < 0x630 )
|
||||||
# define BOOST_SP_NO_SP_CONVERTIBLE
|
# define BOOST_SP_NO_SP_CONVERTIBLE
|
||||||
#endif
|
#endif
|
||||||
|
@ -208,6 +208,17 @@ template<class T, class U> inline bool operator!=(T * a, intrusive_ptr<U> const
|
|||||||
return a != b.get();
|
return a != b.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
|
||||||
|
|
||||||
|
// Resolve the ambiguity between our op!= and the one in rel_ops
|
||||||
|
|
||||||
|
template<class T> inline bool operator!=(intrusive_ptr<T> const & a, intrusive_ptr<T> const & b)
|
||||||
|
{
|
||||||
|
return a.get() != b.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined( BOOST_NO_CXX11_NULLPTR )
|
#if !defined( BOOST_NO_CXX11_NULLPTR )
|
||||||
|
|
||||||
template<class T> inline bool operator==( intrusive_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
|
template<class T> inline bool operator==( intrusive_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
|
||||||
@ -268,6 +279,16 @@ template<class T, class U> intrusive_ptr<T> dynamic_pointer_cast(intrusive_ptr<U
|
|||||||
|
|
||||||
#if !defined(BOOST_NO_IOSTREAM)
|
#if !defined(BOOST_NO_IOSTREAM)
|
||||||
|
|
||||||
|
#if ( defined(__GNUC__) && (__GNUC__ < 3) )
|
||||||
|
|
||||||
|
template<class Y> std::ostream & operator<< (std::ostream & os, intrusive_ptr<Y> const & p)
|
||||||
|
{
|
||||||
|
os << p.get();
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
// in STLport's no-iostreams mode no iostream symbols can be used
|
// in STLport's no-iostreams mode no iostream symbols can be used
|
||||||
#ifndef _STLP_NO_IOSTREAMS
|
#ifndef _STLP_NO_IOSTREAMS
|
||||||
|
|
||||||
@ -279,6 +300,8 @@ template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::
|
|||||||
|
|
||||||
#endif // _STLP_NO_IOSTREAMS
|
#endif // _STLP_NO_IOSTREAMS
|
||||||
|
|
||||||
|
#endif // __GNUC__ < 3
|
||||||
|
|
||||||
#endif // !defined(BOOST_NO_IOSTREAM)
|
#endif // !defined(BOOST_NO_IOSTREAM)
|
||||||
|
|
||||||
// hash_value
|
// hash_value
|
||||||
|
@ -740,6 +740,17 @@ template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, share
|
|||||||
return a.get() != b.get();
|
return a.get() != b.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if __GNUC__ == 2 && __GNUC_MINOR__ <= 96
|
||||||
|
|
||||||
|
// Resolve the ambiguity between our op!= and the one in rel_ops
|
||||||
|
|
||||||
|
template<class T> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<T> const & b) BOOST_NOEXCEPT
|
||||||
|
{
|
||||||
|
return a.get() != b.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined( BOOST_NO_CXX11_NULLPTR )
|
#if !defined( BOOST_NO_CXX11_NULLPTR )
|
||||||
|
|
||||||
template<class T> inline bool operator==( shared_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
|
template<class T> inline bool operator==( shared_ptr<T> const & p, boost::detail::sp_nullptr_t ) BOOST_NOEXCEPT
|
||||||
@ -825,6 +836,16 @@ template<class T> inline typename shared_ptr<T>::element_type * get_pointer(shar
|
|||||||
|
|
||||||
#if !defined(BOOST_NO_IOSTREAM)
|
#if !defined(BOOST_NO_IOSTREAM)
|
||||||
|
|
||||||
|
#if ( defined(__GNUC__) && (__GNUC__ < 3) )
|
||||||
|
|
||||||
|
template<class Y> std::ostream & operator<< (std::ostream & os, shared_ptr<Y> const & p)
|
||||||
|
{
|
||||||
|
os << p.get();
|
||||||
|
return os;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
// in STLport's no-iostreams mode no iostream symbols can be used
|
// in STLport's no-iostreams mode no iostream symbols can be used
|
||||||
#ifndef _STLP_NO_IOSTREAMS
|
#ifndef _STLP_NO_IOSTREAMS
|
||||||
|
|
||||||
@ -836,6 +857,8 @@ template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::
|
|||||||
|
|
||||||
#endif // _STLP_NO_IOSTREAMS
|
#endif // _STLP_NO_IOSTREAMS
|
||||||
|
|
||||||
|
#endif // __GNUC__ < 3
|
||||||
|
|
||||||
#endif // !defined(BOOST_NO_IOSTREAM)
|
#endif // !defined(BOOST_NO_IOSTREAM)
|
||||||
|
|
||||||
// get_deleter
|
// get_deleter
|
||||||
@ -843,10 +866,12 @@ template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::
|
|||||||
namespace detail
|
namespace detail
|
||||||
{
|
{
|
||||||
|
|
||||||
#if ( defined(__EDG_VERSION__) && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) ) || \
|
#if ( defined(__GNUC__) && BOOST_WORKAROUND(__GNUC__, < 3) ) || \
|
||||||
|
( defined(__EDG_VERSION__) && BOOST_WORKAROUND(__EDG_VERSION__, <= 238) ) || \
|
||||||
( defined(__HP_aCC) && BOOST_WORKAROUND(__HP_aCC, <= 33500) )
|
( defined(__HP_aCC) && BOOST_WORKAROUND(__HP_aCC, <= 33500) )
|
||||||
|
|
||||||
// EDG 2.38 and HP aCC A.03.35 don't allow static_cast<X const *>(void *)
|
// g++ 2.9x doesn't allow static_cast<X const *>(void *)
|
||||||
|
// apparently EDG 2.38 and HP aCC A.03.35 also don't accept it
|
||||||
|
|
||||||
template<class D, class T> D * basic_get_deleter(shared_ptr<T> const & p)
|
template<class D, class T> D * basic_get_deleter(shared_ptr<T> const & p)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user