diff --git a/example/issues.cpp b/example/issues.cpp
index b0f3a6b..e2048b1 100644
--- a/example/issues.cpp
+++ b/example/issues.cpp
@@ -8,6 +8,7 @@
 */
 
 #include "example.h"
+#include <pybind11/stl.h>
 
 struct Base {
     virtual void dispatch(void) const = 0;
@@ -19,15 +20,10 @@
     }
 };
 
+struct Placeholder { int i; };
+
 void dispatch_issue_go(const Base * b) { b->dispatch(); }
 
-PYBIND11_PLUGIN(mytest)
-{
-    pybind11::module m("mytest", "A test");
-
-
-    return m.ptr();
-}
 void init_issues(py::module &m) {
     py::module m2 = m.def_submodule("issues");
 
@@ -38,10 +34,25 @@
     m2.def("print_char", [](char c) { std::cout << c << std::endl; });
 
     // #159: virtual function dispatch has problems with similar-named functions
-    pybind11::class_<DispatchIssue> base(m2, "DispatchIssue");
+    py::class_<DispatchIssue> base(m2, "DispatchIssue");
     base.alias<Base>()
-        .def(pybind11::init<>())
+        .def(py::init<>())
         .def("dispatch", &Base::dispatch);
 
     m2.def("dispatch_issue_go", &dispatch_issue_go);
+
+    py::class_<Placeholder>(m2, "Placeholder")
+        .def("__repr__", [](const Placeholder &p) { return "Placeholder[" + std::to_string(p.i) + "]"; });
+
+    // #171: Can't return reference wrappers (or STL datastructures containing them)
+    m2.def("return_vec_of_reference_wrapper", [] {
+        Placeholder *p1 = new Placeholder{1};
+        Placeholder *p2 = new Placeholder{2};
+        Placeholder *p3 = new Placeholder{2};
+        std::vector<std::reference_wrapper<Placeholder>> v;
+        v.push_back(std::ref(*p1));
+        v.push_back(std::ref(*p2));
+        v.push_back(std::ref(*p3));
+        return v;
+    });
 }
diff --git a/example/issues.py b/example/issues.py
index 84752b0..4095daa 100644
--- a/example/issues.py
+++ b/example/issues.py
@@ -5,6 +5,7 @@
 
 from example.issues import print_cchar, print_char
 from example.issues import DispatchIssue, dispatch_issue_go
+from example.issues import return_vec_of_reference_wrapper
 
 print_cchar("const char *")
 print_char('c')
@@ -26,3 +27,5 @@
 
 b = PyClass2()
 dispatch_issue_go(b)
+
+print(return_vec_of_reference_wrapper())
diff --git a/example/issues.ref b/example/issues.ref
index 55cbdda..74b34c2 100644
--- a/example/issues.ref
+++ b/example/issues.ref
@@ -2,3 +2,4 @@
 c
 Failed as expected: Tried to call pure virtual function "dispatch"
 Yay..
+[Placeholder[1], Placeholder[2], Placeholder[2]]
diff --git a/include/pybind11/cast.h b/include/pybind11/cast.h
index 802c674..1002ab1 100644
--- a/include/pybind11/cast.h
+++ b/include/pybind11/cast.h
@@ -241,6 +241,13 @@
     static void *copy_constructor(const void *) { return nullptr; }
 };
 
+template <typename type> class type_caster<std::reference_wrapper<type>> : public type_caster<type> {
+public:
+    static handle cast(const std::reference_wrapper<type> &src, return_value_policy policy, handle parent) {
+        return type_caster<type>::cast(&src.get(), policy, parent);
+    }
+};
+
 #define PYBIND11_TYPE_CASTER(type, py_name) \
     protected: \
         type value; \
