Undo overeager workarounding and safe_bool.

[SVN r19364]
This commit is contained in:
Dave Abrahams 2003-07-30 12:41:10 +00:00
parent cb189bd6be
commit fe3aaf62cd
2 changed files with 3 additions and 18 deletions

View File

@ -316,15 +316,9 @@ template <class T, class B = ::boost::detail::empty_base>
struct bool_testable : B
{
friend bool operator!(const T& t) { return !static_cast<bool>(t); }
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
private:
#if !BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 600)
typedef signed char private_number_type;
# if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301)) \
|| BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(800)) \
|| BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(3)) \
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
public:
# endif
operator private_number_type() const;
#endif
};

View File

@ -51,14 +51,7 @@ namespace
class Wrapped1
: boost::operators<Wrapped1<T> >
, boost::shiftable<Wrapped1<T> >
,
#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1300)) \
|| BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(3)) \
|| BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(800)) \
|| BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
public
#endif
boost::bool_testable<Wrapped1<T> >
, boost::bool_testable<Wrapped1<T> >
{
public:
explicit Wrapped1( T v = T() ) : _value(v) {}
@ -89,9 +82,7 @@ namespace
{ _value >>= x._value; return *this; }
Wrapped1& operator++() { ++_value; return *this; }
Wrapped1& operator--() { --_value; return *this; }
typedef T (Wrapped1::*safe_bool)() const;
operator safe_bool () const { return _value ? &Wrapped1::value : 0; }
operator bool() const { return _value != 0; }
private:
T _value;