summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2020-08-26 15:53:08 +0200
committerJohnny Willemsen <jwillemsen@remedy.nl>2020-08-26 15:53:08 +0200
commit182f6c2a6453a8e4c84bd64a234194d7b42ea07f (patch)
tree54bf3afe3873361189d6cb057fb600bd0039678e
parent8b02c0495ec5d3fae0ab8de6985701337eb8eec6 (diff)
parent7e7902f9ffa652f78540870170c492a67816b731 (diff)
downloadATCD-182f6c2a6453a8e4c84bd64a234194d7b42ea07f.tar.gz
Merge branch 'unspecified-bool-type' of git://github.com/likema/ACE_TAO into likema-unspecified-bool-type
-rw-r--r--ACE/ace/Refcounted_Auto_Ptr.h6
-rw-r--r--ACE/ace/Refcounted_Auto_Ptr.inl4
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*