diff --git a/include/internal/catch_common.h b/include/internal/catch_common.h
index c207d8e..bcb6bd5 100644
--- a/include/internal/catch_common.h
+++ b/include/internal/catch_common.h
@@ -44,17 +44,6 @@
         virtual ~NonCopyable();
     };
 
-    class SafeBool {
-    public:
-        typedef void (SafeBool::*type)() const;
-
-        static type makeSafe( bool value ) {
-            return value ? &SafeBool::trueValue : 0;
-        }
-    private:
-        void trueValue() const {}
-    };
-
     template<typename ContainerT>
     inline void deleteAll( ContainerT& container ) {
         for( auto p : container )
diff --git a/include/internal/catch_option.hpp b/include/internal/catch_option.hpp
index c9c3c16..8b146da 100644
--- a/include/internal/catch_option.hpp
+++ b/include/internal/catch_option.hpp
@@ -61,8 +61,8 @@
         bool none() const { return nullableValue == nullptr; }
 
         bool operator !() const { return nullableValue == nullptr; }
-        operator SafeBool::type() const {
-            return SafeBool::makeSafe( some() );
+        explicit operator bool() const {
+            return some();
         }
 
     private:
diff --git a/include/internal/catch_ptr.hpp b/include/internal/catch_ptr.hpp
index 5da73aa..4197cf7 100644
--- a/include/internal/catch_ptr.hpp
+++ b/include/internal/catch_ptr.hpp
@@ -56,7 +56,7 @@
         T& operator*() const { return *m_p; }
         T* operator->() const { return m_p; }
         bool operator !() const { return m_p == nullptr; }
-        operator SafeBool::type() const { return SafeBool::makeSafe( m_p != nullptr ); }
+        explicit operator bool() const { return m_p != nullptr; }
 
     private:
         T* m_p;
diff --git a/projects/SelfTest/TrickyTests.cpp b/projects/SelfTest/TrickyTests.cpp
index 70c5696..05053fe 100644
--- a/projects/SelfTest/TrickyTests.cpp
+++ b/projects/SelfTest/TrickyTests.cpp
@@ -293,8 +293,8 @@
 {
     explicit Boolable( bool value ) : m_value( value ) {}
 
-    operator Catch::SafeBool::type() const {
-        return Catch::SafeBool::makeSafe( m_value );
+    explicit operator bool() const {
+        return m_value;
     }
 
     bool m_value;
