* include/ext/pointer.h [__cplusplus >= 201103L]
        (_Pointer_adapter::operator bool): Add explicit conversion operator
        to replace safe bool idiom.

Tested powerpc64le-linux, committed to trunk.


commit 791062941cf5c4b93153bfd10d5bb9b0ac78d301
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Jul 31 11:33:03 2018 +0100

    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.

diff --git a/libstdc++-v3/include/ext/pointer.h 
b/libstdc++-v3/include/ext/pointer.h
index 318fbb11b08..ee5c30dfa64 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 

Reply via email to