Address issue with handle::cast<bool>(), quench warning in example 12 (fixes #110)
diff --git a/example/example12.cpp b/example/example12.cpp
index 7bba2c8..ab1b482 100644
--- a/example/example12.cpp
+++ b/example/example12.cpp
@@ -54,6 +54,7 @@
             Example12,
             run_bool
         );
+        throw std::runtime_error("this will never be reached");
     }
 
     virtual void pure_virtual() {
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index bd504bf..a9202f6 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -574,7 +574,7 @@
     return object(detail::type_caster<typename detail::intrinsic_type<T>::type>::cast(value, policy, parent), false);
 }
 
-template <typename T> inline T handle::cast() const { return pybind11::cast<T>(m_ptr); }
+template <typename T> inline T handle::cast() const { return pybind11::cast<T>(*this); }
 template <> inline void handle::cast() const { return; }
 
 template <typename... Args> inline object handle::call(Args&&... args_) const {