diff options
Diffstat (limited to 'common/ptr.h')
-rw-r--r-- | common/ptr.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/common/ptr.h b/common/ptr.h index ebdd77cf3c..510fec14df 100644 --- a/common/ptr.h +++ b/common/ptr.h @@ -25,6 +25,7 @@ #include "common/scummsys.h" #include "common/noncopyable.h" +#include "common/safe-bool.h" #include "common/types.h" namespace Common { @@ -103,7 +104,7 @@ private: * a plain pointer is only possible via SharedPtr::get. */ template<class T> -class SharedPtr { +class SharedPtr : public SafeBool<SharedPtr<T> > { #if !defined(__GNUC__) || GCC_ATLEAST(3, 0) template<class T2> friend class SharedPtr; #endif @@ -167,7 +168,7 @@ public: * Implicit conversion operator to bool for convenience, to make * checks like "if (sharedPtr) ..." possible. */ - operator bool() const { return _pointer != 0; } + bool operator_bool() const { return _pointer != nullptr; } /** * Checks if the SharedPtr object is the only object refering @@ -223,7 +224,7 @@ private: }; template<typename T> -class ScopedPtr : NonCopyable { +class ScopedPtr : private NonCopyable, public SafeBool<ScopedPtr<T> > { public: typedef T ValueType; typedef T *PointerType; @@ -238,7 +239,7 @@ public: * Implicit conversion operator to bool for convenience, to make * checks like "if (scopedPtr) ..." possible. */ - operator bool() const { return _pointer != 0; } + bool operator_bool() const { return _pointer != nullptr; } ~ScopedPtr() { delete _pointer; @@ -277,7 +278,7 @@ private: template<typename T> -class DisposablePtr : NonCopyable { +class DisposablePtr : private NonCopyable, public SafeBool<DisposablePtr<T> > { public: typedef T ValueType; typedef T *PointerType; @@ -296,7 +297,7 @@ public: * Implicit conversion operator to bool for convenience, to make * checks like "if (scopedPtr) ..." possible. */ - operator bool() const { return _pointer; } + bool operator_bool() const { return _pointer != nullptr; } /** * Returns the plain pointer value. |