[vector] Complete sorted_vector 5-methods
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};