From: redi Date: Tue, 31 Jul 2018 14:55:36 +0000 (+0000) Subject: Replace safe bool idiom with explicit operator bool X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22bbe014d6db2f678b9d1bf5b1ac216dd798d9f2;p=thirdparty%2Fgcc.git Replace safe bool idiom with explicit operator bool * include/ext/pointer.h [__cplusplus >= 201103L] (_Pointer_adapter::operator bool): Add explicit conversion operator to replace safe bool idiom. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263162 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6298f7eab23c..b77a9f00bc9b 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2018-07-31 Jonathan Wakely + + * include/ext/pointer.h [__cplusplus >= 201103L] + (_Pointer_adapter::operator bool): Add explicit conversion operator + to replace safe bool idiom. + 2018-07-30 Jonathan Wakely PR libstdc++/86734 diff --git a/libstdc++-v3/include/ext/pointer.h b/libstdc++-v3/include/ext/pointer.h index 318fbb11b087..ee5c30dfa64f 100644 --- a/libstdc++-v3/include/ext/pointer.h +++ b/libstdc++-v3/include/ext/pointer.h @@ -356,6 +356,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return _Storage_policy::get()[__index]; } // To allow implicit conversion to "bool", for "if (ptr)..." +#if __cplusplus >= 201103L + explicit operator bool() const { return _Storage_policy::get() != 0; } +#else private: typedef element_type*(_Pointer_adapter::*__unspecified_bool_type)() const; @@ -370,6 +373,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool operator!() const { return (_Storage_policy::get() == 0); } +#endif // Pointer differences inline friend std::ptrdiff_t