Modernize conversion to bool to the explicit bool conversion operator (library wide). This fixes http://llvm.org/bugs/show_bug.cgi?id=12058.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@151088 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -376,6 +376,12 @@ template <unsigned> struct __static_assert_check {};
|
|||||||
#define __has_feature(__x) 0
|
#define __has_feature(__x) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if __has_feature(cxx_explicit_conversions)
|
||||||
|
# define _LIBCPP_EXPLICIT explicit
|
||||||
|
#else
|
||||||
|
# define _LIBCPP_EXPLICIT
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
|
#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
|
||||||
#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum _
|
#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_VISIBLE x { enum _
|
||||||
#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \
|
#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \
|
||||||
|
@@ -207,7 +207,7 @@ public:
|
|||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
bool owns_lock() const {return __owns_;}
|
bool owns_lock() const {return __owns_;}
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
// explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool () const {return __owns_;}
|
operator bool () const {return __owns_;}
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
mutex_type* mutex() const {return __m_;}
|
mutex_type* mutex() const {return __m_;}
|
||||||
|
@@ -132,7 +132,7 @@ public:
|
|||||||
~exception_ptr() _NOEXCEPT;
|
~exception_ptr() _NOEXCEPT;
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
// explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const _NOEXCEPT {return __ptr_ != nullptr;}
|
operator bool() const _NOEXCEPT {return __ptr_ != nullptr;}
|
||||||
|
|
||||||
friend _LIBCPP_INLINE_VISIBILITY
|
friend _LIBCPP_INLINE_VISIBILITY
|
||||||
|
@@ -1163,7 +1163,7 @@ public:
|
|||||||
|
|
||||||
// function capacity:
|
// function capacity:
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
/*explicit*/ operator bool() const _NOEXCEPT {return __f_;}
|
_LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {return __f_;}
|
||||||
|
|
||||||
// deleted overloads close possible hole in the type system
|
// deleted overloads close possible hole in the type system
|
||||||
template<class _R2, class... _ArgTypes2>
|
template<class _R2, class... _ArgTypes2>
|
||||||
|
@@ -572,7 +572,8 @@ public:
|
|||||||
typedef typename traits_type::pos_type pos_type;
|
typedef typename traits_type::pos_type pos_type;
|
||||||
typedef typename traits_type::off_type off_type;
|
typedef typename traits_type::off_type off_type;
|
||||||
|
|
||||||
_LIBCPP_ALWAYS_INLINE // explicit
|
_LIBCPP_ALWAYS_INLINE
|
||||||
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const {return !fail();}
|
operator bool() const {return !fail();}
|
||||||
_LIBCPP_ALWAYS_INLINE bool operator!() const {return fail();}
|
_LIBCPP_ALWAYS_INLINE bool operator!() const {return fail();}
|
||||||
_LIBCPP_ALWAYS_INLINE iostate rdstate() const {return ios_base::rdstate();}
|
_LIBCPP_ALWAYS_INLINE iostate rdstate() const {return ios_base::rdstate();}
|
||||||
|
@@ -256,7 +256,7 @@ public:
|
|||||||
// ~sentry() = default;
|
// ~sentry() = default;
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
// explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const {return __ok_;}
|
operator bool() const {return __ok_;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -2688,9 +2688,9 @@ public:
|
|||||||
{return __ptr_.second();}
|
{return __ptr_.second();}
|
||||||
_LIBCPP_INLINE_VISIBILITY _Dp_const_reference get_deleter() const _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY _Dp_const_reference get_deleter() const _NOEXCEPT
|
||||||
{return __ptr_.second();}
|
{return __ptr_.second();}
|
||||||
_LIBCPP_INLINE_VISIBILITY operator int __nat::*() const
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
_NOEXCEPT
|
_LIBCPP_EXPLICIT operator bool() const _NOEXCEPT
|
||||||
{return __ptr_.first() ? &__nat::__for_bool_ : 0;}
|
{return __ptr_.first() != nullptr;}
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY pointer release() _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY pointer release() _NOEXCEPT
|
||||||
{
|
{
|
||||||
@@ -2881,8 +2881,9 @@ public:
|
|||||||
{return __ptr_.second();}
|
{return __ptr_.second();}
|
||||||
_LIBCPP_INLINE_VISIBILITY _Dp_const_reference get_deleter() const _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY _Dp_const_reference get_deleter() const _NOEXCEPT
|
||||||
{return __ptr_.second();}
|
{return __ptr_.second();}
|
||||||
_LIBCPP_INLINE_VISIBILITY operator int __nat::*() const _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
{return __ptr_.first() ? &__nat::__for_bool_ : 0;}
|
_LIBCPP_EXPLICIT operator bool() const _NOEXCEPT
|
||||||
|
{return __ptr_.first() != nullptr;}
|
||||||
|
|
||||||
_LIBCPP_INLINE_VISIBILITY pointer release() _NOEXCEPT
|
_LIBCPP_INLINE_VISIBILITY pointer release() _NOEXCEPT
|
||||||
{
|
{
|
||||||
@@ -3937,7 +3938,7 @@ public:
|
|||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
bool unique() const _NOEXCEPT {return use_count() == 1;}
|
bool unique() const _NOEXCEPT {return use_count() == 1;}
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
/*explicit*/ operator bool() const _NOEXCEPT {return get() != 0;}
|
_LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {return get() != 0;}
|
||||||
template <class _Up>
|
template <class _Up>
|
||||||
_LIBCPP_INLINE_VISIBILITY
|
_LIBCPP_INLINE_VISIBILITY
|
||||||
bool owner_before(shared_ptr<_Up> const& __p) const
|
bool owner_before(shared_ptr<_Up> const& __p) const
|
||||||
|
@@ -220,7 +220,7 @@ public:
|
|||||||
~sentry();
|
~sentry();
|
||||||
|
|
||||||
_LIBCPP_ALWAYS_INLINE
|
_LIBCPP_ALWAYS_INLINE
|
||||||
// explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const {return __ok_;}
|
operator bool() const {return __ok_;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -451,7 +451,7 @@ public:
|
|||||||
string message() const;
|
string message() const;
|
||||||
|
|
||||||
_LIBCPP_ALWAYS_INLINE
|
_LIBCPP_ALWAYS_INLINE
|
||||||
//explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const _NOEXCEPT {return __val_ != 0;}
|
operator bool() const _NOEXCEPT {return __val_ != 0;}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -528,7 +528,7 @@ public:
|
|||||||
string message() const;
|
string message() const;
|
||||||
|
|
||||||
_LIBCPP_ALWAYS_INLINE
|
_LIBCPP_ALWAYS_INLINE
|
||||||
//explicit
|
_LIBCPP_EXPLICIT
|
||||||
operator bool() const _NOEXCEPT {return __val_ != 0;}
|
operator bool() const _NOEXCEPT {return __val_ != 0;}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user