diff --git a/example/issues.cpp b/example/issues.cpp
index bb773fa..a462214 100644
--- a/example/issues.cpp
+++ b/example/issues.cpp
@@ -21,7 +21,7 @@
     // #70 compilation issue if operator new is not public
     class NonConstructible { private: void *operator new(size_t bytes) throw(); };
     py::class_<NonConstructible>(m, "Foo");
-    m.def("getstmt", []() -> NonConstructible * { return nullptr; },
+    m2.def("getstmt", []() -> NonConstructible * { return nullptr; },
         py::return_value_policy::reference);
 #endif
 
@@ -101,4 +101,7 @@
                 list.append(py::cast(e));
             return list;
         });
-};
+
+    // (no id): should not be able to pass 'None' to a reference argument
+    m2.def("print_element", [](ElementA &el) { std::cout << el.value() << std::endl; });
+}
diff --git a/example/issues.py b/example/issues.py
index 2dfd059..de41769 100644
--- a/example/issues.py
+++ b/example/issues.py
@@ -7,7 +7,7 @@
 from example.issues import DispatchIssue, dispatch_issue_go
 from example.issues import Placeholder, return_vec_of_reference_wrapper
 from example.issues import iterator_passthrough
-from example.issues import ElementList, ElementA
+from example.issues import ElementList, ElementA, print_element
 import gc
 
 print_cchar("const char *")
@@ -42,3 +42,8 @@
 for i, v in enumerate(el.get()):
     print("%i==%i, " % (i, v.value()), end='')
 print()
+
+try:
+    print_element(None)
+except Exception as e:
+    print("Failed as expected: " + str(e))
diff --git a/example/issues.ref b/example/issues.ref
index 13bafc2..2d34f42 100644
--- a/example/issues.ref
+++ b/example/issues.ref
@@ -5,3 +5,6 @@
 [Placeholder[1], Placeholder[2], Placeholder[3], Placeholder[4]]
 [3, 5, 7, 9, 11, 13, 15]
 0==0, 1==1, 2==2, 3==3, 4==4, 5==5, 6==6, 7==7, 8==8, 9==9, 
+Failed as expected: Incompatible function arguments. The following argument types are supported:
+    1. (example.issues.ElementA) -> NoneType
+
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index ffb4893..64e6eee 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -225,6 +225,8 @@
     typename std::add_pointer<typename intrinsic_type<T>::type>::type,
     typename std::add_lvalue_reference<typename intrinsic_type<T>::type>::type>::type;
 
+/// Thrown then trying to cast a null pointer into a reference argument
+class invalid_reference_cast : public std::exception { };
 
 /// Generic type caster for objects stored on the heap
 template <typename type> class type_caster_base : public type_caster_generic {
@@ -254,7 +256,7 @@
     template <typename T> using cast_op_type = pybind11::detail::cast_op_type<T>;
 
     operator type*() { return (type *) value; }
-    operator type&() { return *((type *) value); }
+    operator type&() { if (!value) throw invalid_reference_cast(); return *((type *) value); }
 
 protected:
     typedef void *(*Constructor)(const void *stream);
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index ea67f7e..264646c 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -409,8 +409,13 @@
                         }
                     }
                 }
-                if (kwargs_consumed == nkwargs)
-                    result = it->impl(it, args_, parent);
+
+                try {
+                    if (kwargs_consumed == nkwargs)
+                        result = it->impl(it, args_, parent);
+                } catch (detail::invalid_reference_cast &) {
+                    result = PYBIND11_TRY_NEXT_OVERLOAD;
+                }
 
                 if (result.ptr() != PYBIND11_TRY_NEXT_OVERLOAD)
                     break;
