mirror of
https://github.com/boostorg/utility.git
synced 2025-05-09 23:14:02 +00:00
Undo overeager workarounding and safe_bool.
[SVN r19364]
This commit is contained in:
parent
cb189bd6be
commit
fe3aaf62cd
@ -316,15 +316,9 @@ template <class T, class B = ::boost::detail::empty_base>
|
|||||||
struct bool_testable : B
|
struct bool_testable : B
|
||||||
{
|
{
|
||||||
friend bool operator!(const T& t) { return !static_cast<bool>(t); }
|
friend bool operator!(const T& t) { return !static_cast<bool>(t); }
|
||||||
|
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
|
||||||
private:
|
private:
|
||||||
#if !BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, <= 600)
|
|
||||||
typedef signed char private_number_type;
|
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;
|
operator private_number_type() const;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
@ -51,14 +51,7 @@ namespace
|
|||||||
class Wrapped1
|
class Wrapped1
|
||||||
: boost::operators<Wrapped1<T> >
|
: boost::operators<Wrapped1<T> >
|
||||||
, boost::shiftable<Wrapped1<T> >
|
, boost::shiftable<Wrapped1<T> >
|
||||||
,
|
, boost::bool_testable<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> >
|
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit Wrapped1( T v = T() ) : _value(v) {}
|
explicit Wrapped1( T v = T() ) : _value(v) {}
|
||||||
@ -89,9 +82,7 @@ namespace
|
|||||||
{ _value >>= x._value; return *this; }
|
{ _value >>= x._value; return *this; }
|
||||||
Wrapped1& operator++() { ++_value; return *this; }
|
Wrapped1& operator++() { ++_value; return *this; }
|
||||||
Wrapped1& operator--() { --_value; return *this; }
|
Wrapped1& operator--() { --_value; return *this; }
|
||||||
|
operator bool() const { return _value != 0; }
|
||||||
typedef T (Wrapped1::*safe_bool)() const;
|
|
||||||
operator safe_bool () const { return _value ? &Wrapped1::value : 0; }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T _value;
|
T _value;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user