diff --git a/octa/internal/hashtable.h b/octa/internal/hashtable.h index 248c809..dbd4d60 100644 --- a/octa/internal/hashtable.h +++ b/octa/internal/hashtable.h @@ -50,6 +50,12 @@ public: HashRange(Chain **beg, Chain **end, Chain *node): p_beg(beg), p_end(end), p_node(node) {} + template + HashRange(const HashRange &v, octa::EnableIf< + octa::IsConvertible::value, bool + > = true): p_beg(*((Chain ***)&v)), p_end(*(((Chain ***)&v) + 1)), + p_node(*(((Chain **)&v) + 2)) {} + HashRange &operator=(const HashRange &v) { p_beg = v.p_beg; p_end = v.p_end; @@ -84,6 +90,11 @@ public: BucketRange(Chain *node): p_node(node) {} BucketRange(const BucketRange &v): p_node(v.p_node) {} + template + BucketRange(const BucketRange &v, octa::EnableIf< + octa::IsConvertible::value, bool + > = true): p_node(*((Chain **)&v)) {} + BucketRange &operator=(const BucketRange &v) { p_node = v.p_node; return *this;