function_base.hpp:

- Use BOOST_WORKAROUND more
  - Borland C++ 5.5 update 2 doesn't support enable_if
  - MSVC 7.0 needs the comparison-with-zero workarounds


[SVN r16636]
This commit is contained in:
Douglas Gregor
2002-12-17 13:50:07 +00:00
parent c4451e5a64
commit 535612ec85

View File

@ -60,16 +60,16 @@ namespace boost { namespace python { namespace objects {
#endif #endif
// Borland C++ 5.6.0 doesn't support enable_if // Borland C++ 5.6.0 doesn't support enable_if
#if defined(__BORLANDC__) && __BORLANDC__ <= 0x560 && !defined(BOOST_STRICT_CONFIG) #if BOOST_WORKAROUND(__BORLANDC__, <= 0x561)
# define BOOST_FUNCTION_NO_ENABLE_IF # define BOOST_FUNCTION_NO_ENABLE_IF
#endif #endif
// Metrowerks 7.2 doesn't support enable_if // Metrowerks 7.2 doesn't support enable_if
#if defined(__MWERKS__) && __MWERKS__ <= 0x2407 && !defined(BOOST_STRICT_CONFIG) #if BOOST_WORKAROUND(__MWERKS__, <= 0x2407)
# define BOOST_FUNCTION_NO_ENABLE_IF # define BOOST_FUNCTION_NO_ENABLE_IF
#endif #endif
#if defined(__SUNPRO_CC) && __SUNPRO_CC <= 0x540 && !defined(BOOST_STRICT_CONFIG) #if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x540)
# define BOOST_FUNCTION_NO_ENABLE_IF # define BOOST_FUNCTION_NO_ENABLE_IF
#endif #endif
@ -377,26 +377,26 @@ public:
void operator==(const function_base&, const function_base&); void operator==(const function_base&, const function_base&);
void operator!=(const function_base&, const function_base&); void operator!=(const function_base&, const function_base&);
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) #if BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
inline bool operator==(const function_base& f, inline bool operator==(const function_base& f,
detail::function::useless_clear_type*) detail::function::useless_clear_type*)
{ {
return f.empty(); return f.empty();
} }
inline bool operator!=(const function_base& f, inline bool operator!=(const function_base& f,
detail::function::useless_clear_type*) detail::function::useless_clear_type*)
{ {
return !f.empty(); return !f.empty();
} }
inline bool operator==(detail::function::useless_clear_type*, inline bool operator==(detail::function::useless_clear_type*,
const function_base& f) const function_base& f)
{ {
return f.empty(); return f.empty();
} }
inline bool operator!=(detail::function::useless_clear_type*, inline bool operator!=(detail::function::useless_clear_type*,
const function_base& f) const function_base& f)
{ {
return !f.empty(); return !f.empty();