diff options
author | Like Ma <likemartinma@gmail.com> | 2019-11-13 20:20:47 +0800 |
---|---|---|
committer | Like Ma <likemartinma@gmail.com> | 2019-12-11 10:52:14 +0800 |
commit | 7e7902f9ffa652f78540870170c492a67816b731 (patch) | |
tree | 8ebc57b5d4a8860f4ef39492ab0331af4c0ade3e | |
parent | 3cb77e292612ea00bfc9b39d2d7103c50fa5e54c (diff) | |
download | ATCD-7e7902f9ffa652f78540870170c492a67816b731.tar.gz |
Use unspecified_bool_type instead of bool.
-rw-r--r-- | ACE/ace/Refcounted_Auto_Ptr.h | 6 | ||||
-rw-r--r-- | ACE/ace/Refcounted_Auto_Ptr.inl | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/ACE/ace/Refcounted_Auto_Ptr.h b/ACE/ace/Refcounted_Auto_Ptr.h index 670243dc1b5..aa133352a35 100644 --- a/ACE/ace/Refcounted_Auto_Ptr.h +++ b/ACE/ace/Refcounted_Auto_Ptr.h @@ -44,6 +44,10 @@ template <class X, class ACE_LOCK> class ACE_Refcounted_Auto_Ptr; template <class X, class ACE_LOCK> class ACE_Refcounted_Auto_Ptr { + /// Used to define a proper boolean conversion for "if (sp) ..." + static void unspecified_bool(ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>***){}; + typedef void (*unspecified_bool_type)(ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>***); + public: /// Constructor that initializes an ACE_Refcounted_Auto_Ptr to /// the specified pointer value. @@ -86,7 +90,7 @@ public: bool operator !() const; /// Check rep easily. - operator bool () const; + operator unspecified_bool_type() const; /// Releases the reference to the underlying representation object. /// @retval The pointer value prior to releasing it. diff --git a/ACE/ace/Refcounted_Auto_Ptr.inl b/ACE/ace/Refcounted_Auto_Ptr.inl index f495076b153..30f3b2e1b02 100644 --- a/ACE/ace/Refcounted_Auto_Ptr.inl +++ b/ACE/ace/Refcounted_Auto_Ptr.inl @@ -128,9 +128,9 @@ ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator !() const } template<class X, class ACE_LOCK> inline -ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator bool () const +ACE_Refcounted_Auto_Ptr<X, ACE_LOCK>::operator unspecified_bool_type () const { - return this->rep_->get () != 0; + return this->rep_->get () != 0 ? unspecified_bool : 0; } template <class X, class ACE_LOCK> inline X* |