diff --git a/src/hb-map.hh b/src/hb-map.hh
index 45bd3cb..e4b7910 100644
--- a/src/hb-map.hh
+++ b/src/hb-map.hh
@@ -52,6 +52,12 @@
     for (auto&& item : lst)
       set (item.first, item.second);
   }
+  template <typename Iterable,
+	    hb_requires (hb_is_iterable (Iterable))>
+  hb_hashmap_t (const Iterable &o) : hb_hashmap_t ()
+  {
+    hb_copy (o, *this);
+  }
 
   static_assert (hb_is_integral (K) || hb_is_pointer (K), "");
   static_assert (hb_is_integral (V) || hb_is_pointer (V), "");
diff --git a/src/test-map.cc b/src/test-map.cc
index 2d03058..5761cc8 100644
--- a/src/test-map.cc
+++ b/src/test-map.cc
@@ -64,6 +64,30 @@
     v = hb_map_t {};
   }
 
+  /* Test initializing from iterable. */
+  {
+    hb_map_t s;
+
+    s.set (1, 2);
+    s.set (3, 4);
+
+    hb_map_t v (s);
+
+    assert (v.get_population () == 2);
+  }
+
+  /* Test initializing from iterator. */
+  {
+    hb_map_t s;
+
+    s.set (1, 2);
+    s.set (3, 4);
+
+    hb_map_t v (hb_iter (s));
+
+    assert (v.get_population () == 2);
+  }
+
   /* Test initializing from initializer list and swapping. */
   {
     using pair_t = hb_pair_t<hb_codepoint_t, hb_codepoint_t>;
