diff --git a/src/hb-vector.hh b/src/hb-vector.hh
index 43e21d4..c34498b 100644
--- a/src/hb-vector.hh
+++ b/src/hb-vector.hh
@@ -313,9 +313,16 @@
 template <typename Type>
 struct hb_sorted_vector_t : hb_vector_t<Type>
 {
-  hb_sorted_vector_t () : hb_vector_t<Type> () {}
+  hb_sorted_vector_t () = default;
+  ~hb_sorted_vector_t () = default;
+  hb_sorted_vector_t (hb_sorted_vector_t& o) = default;
+  hb_sorted_vector_t (hb_sorted_vector_t &&o) = default;
   hb_sorted_vector_t (std::initializer_list<Type> lst) : hb_vector_t<Type> (lst) {}
-  hb_sorted_vector_t (hb_sorted_vector_t& o) : hb_vector_t<Type> (o) {}
+  template <typename Iterable,
+	    hb_requires (hb_is_iterable (Iterable))>
+  hb_sorted_vector_t (const Iterable &o) : hb_vector_t<Type> (o) {}
+  hb_sorted_vector_t& operator = (const hb_sorted_vector_t &o) = default;
+  hb_sorted_vector_t& operator = (hb_sorted_vector_t &&o) = default;
   friend void swap (hb_sorted_vector_t& a, hb_sorted_vector_t& b)
   { hb_swap ((hb_vector_t<Type>&) (a), (hb_vector_t<Type>&) (b)); }
 
diff --git a/src/test-vector.cc b/src/test-vector.cc
index 1aeb86b..7dacec8 100644
--- a/src/test-vector.cc
+++ b/src/test-vector.cc
@@ -36,6 +36,7 @@
   {
     hb_vector_t<int> v1 {1, 2};
     hb_vector_t<int> v2 {v1};
+    hb_vector_t<int> V2 {v1};
     assert (v1.length == 2);
     assert (v1[0] == 1);
     assert (v1[1] == 2);
@@ -48,6 +49,7 @@
   {
     hb_vector_t<int> v1 {1, 2};
     hb_vector_t<int> v2 = v1;
+    hb_vector_t<int> V2 = v1;
     assert (v1.length == 2);
     assert (v1[0] == 1);
     assert (v1[1] == 2);
@@ -59,6 +61,7 @@
   /* Test move constructor. */
   {
     hb_vector_t<int> v {hb_vector_t<int> {1, 2}};
+    hb_vector_t<int> V {hb_vector_t<int> {1, 2}};
     assert (v.length == 2);
     assert (v[0] == 1);
     assert (v[1] == 2);
@@ -67,12 +70,14 @@
   /* Test move assignment. */
   {
     hb_vector_t<int> v;
+    hb_sorted_vector_t<int> V;
     v = hb_vector_t<int> {1, 2};
+    V = hb_sorted_vector_t<int> {1, 2};
     assert (v.length == 2);
     assert (v[0] == 1);
     assert (v[1] == 2);
   }
-  /* Test initializing vector from iterable. */
+  /* Test initializing from iterable. */
   {
     hb_set_t s;
 
@@ -80,13 +85,17 @@
     s.add (12);
 
     hb_vector_t<int> v (s);
+    hb_sorted_vector_t<int> V (s);
 
     assert (v.length == 2);
+    assert (V.length == 2);
     assert (v[0] == 12);
+    assert (V[0] == 12);
     assert (v[1] == 18);
+    assert (V[1] == 18);
   }
 
-  /* Test initializing vector from iterator. */
+  /* Test initializing from iterator. */
   {
     hb_set_t s;
 
@@ -94,13 +103,17 @@
     s.add (12);
 
     hb_vector_t<int> v (hb_iter (s));
+    hb_vector_t<int> V (hb_iter (s));
 
     assert (v.length == 2);
+    assert (V.length == 2);
     assert (v[0] == 12);
+    assert (V[0] == 12);
     assert (v[1] == 18);
+    assert (V[1] == 18);
   }
 
-  /* Test initializing vector from initializer list and swapping. */
+  /* Test initializing from initializer list and swapping. */
   {
     hb_vector_t<int> v1 {1, 2, 3};
     hb_vector_t<int> v2 {4, 5};
