diff --git a/example/example17.cpp b/example/example17.cpp
index 8ae4cad..8fd4ad6 100644
--- a/example/example17.cpp
+++ b/example/example17.cpp
@@ -29,6 +29,7 @@
 		.def(pybind11::init<int>());
 
 	pybind11::bind_vector<unsigned int>(m, "VectorInt");
+	pybind11::bind_vector<bool>(m, "VectorBool");
 
 	pybind11::bind_vector<El>(m, "VectorEl");
 
diff --git a/example/example17.py b/example/example17.py
index 65e586b..feae307 100644
--- a/example/example17.py
+++ b/example/example17.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 from __future__ import print_function
 
-from example import VectorInt, El, VectorEl, VectorVectorEl
+from example import VectorInt, El, VectorEl, VectorVectorEl, VectorBool
 
 v_int = VectorInt([0, 0])
 print(len(v_int))
@@ -38,3 +38,11 @@
 vv_a.append(v_a)
 vv_b = vv_a[0]
 print(vv_b)
+
+vv_c = VectorBool()
+for i in range(10):
+    vv_c.append(i % 2 == 0)
+for i in range(10):
+    if vv_c[i] != (i % 2 == 0):
+        print("Error!")
+print(vv_c)
diff --git a/example/example17.ref b/example/example17.ref
index 55e47a6..cc271f3 100644
--- a/example/example17.ref
+++ b/example/example17.ref
@@ -8,3 +8,4 @@
 VectorInt[0, 99, 2, 3]
 VectorEl[El{1}, El{2}]
 VectorEl[El{1}, El{2}]
+VectorBool[1, 0, 1, 0, 1, 0, 1, 0, 1, 0]
diff --git a/include/pybind11/pybind11.h b/include/pybind11/pybind11.h
index 00a7fe0..964aea9 100644
--- a/include/pybind11/pybind11.h
+++ b/include/pybind11/pybind11.h
@@ -1019,13 +1019,16 @@
 
 template <typename... Args> detail::init<Args...> init() { return detail::init<Args...>(); }
 
-template <typename Iterator, typename... Extra> iterator make_iterator(Iterator first, Iterator last, Extra&&... extra) {
+template <typename Iterator,
+          typename ValueType = decltype(*std::declval<Iterator>()),
+          typename... Extra>
+iterator make_iterator(Iterator first, Iterator last, Extra &&... extra) {
     typedef detail::iterator_state<Iterator> state;
 
     if (!detail::get_type_info(typeid(state))) {
         class_<state>(handle(), "")
             .def("__iter__", [](state &s) -> state& { return s; })
-            .def("__next__", [](state &s) -> decltype(*std::declval<Iterator>()) {
+            .def("__next__", [](state &s) -> ValueType {
                 if (s.it == s.end)
                     throw stop_iteration();
                 return *s.it++;
diff --git a/include/pybind11/stl_bind.h b/include/pybind11/stl_bind.h
index 7de71c8..a6b5071 100644
--- a/include/pybind11/stl_bind.h
+++ b/include/pybind11/stl_bind.h
@@ -136,6 +136,7 @@
     using Vector = std::vector<T, Allocator>;
     using SizeType = typename Vector::size_type;
     using DiffType = typename Vector::difference_type;
+    using ItType   = typename Vector::iterator;
     using Class_ = pybind11::class_<Vector, holder_type>;
 
     Class_ cl(m, name.c_str(), std::forward<Args>(args)...);
@@ -214,7 +215,7 @@
     );
 
     cl.def("__getitem__",
-        [](const Vector &v, SizeType i) {
+        [](const Vector &v, SizeType i) -> T {
             if (i >= v.size())
                 throw pybind11::index_error();
             return v[i];
@@ -242,7 +243,7 @@
 
     cl.def("__iter__",
         [](Vector &v) {
-            return pybind11::make_iterator(v.begin(), v.end());
+            return pybind11::make_iterator<ItType, T>(v.begin(), v.end());
         },
         pybind11::keep_alive<0, 1>() /* Essential: keep list alive while iterator exists */
     );
