@@ -350,7 +350,9 @@ namespace lib_interval_tree
350350
351351 public:
352352 constexpr basic_interval_tree_iterator (basic_interval_tree_iterator const &) = default;
353+ constexpr basic_interval_tree_iterator (basic_interval_tree_iterator&& other) noexcept = default;
353354 basic_interval_tree_iterator& operator =(basic_interval_tree_iterator const &) = default ;
355+ basic_interval_tree_iterator& operator =(basic_interval_tree_iterator&& other) noexcept = default ;
354356
355357 bool operator !=(basic_interval_tree_iterator const & other) const
356358 {
@@ -412,6 +414,12 @@ namespace lib_interval_tree
412414 friend tree_type;
413415
414416 public:
417+ ~const_interval_tree_iterator () = default ;
418+ constexpr const_interval_tree_iterator (const_interval_tree_iterator const &) = default;
419+ constexpr const_interval_tree_iterator (const_interval_tree_iterator&&) noexcept = default;
420+ const_interval_tree_iterator& operator =(const_interval_tree_iterator const &) = default ;
421+ const_interval_tree_iterator& operator =(const_interval_tree_iterator&&) noexcept = default ;
422+
415423 const_interval_tree_iterator& operator ++()
416424 {
417425 if (!node_)
@@ -524,6 +532,12 @@ namespace lib_interval_tree
524532 friend tree_type;
525533
526534 public:
535+ ~interval_tree_iterator () = default ;
536+ constexpr interval_tree_iterator (interval_tree_iterator const &) = default;
537+ constexpr interval_tree_iterator (interval_tree_iterator&&) noexcept = default;
538+ interval_tree_iterator& operator =(interval_tree_iterator const &) = default ;
539+ interval_tree_iterator& operator =(interval_tree_iterator&&) noexcept = default ;
540+
527541 interval_tree_iterator& operator ++()
528542 {
529543 if (!node_)
@@ -637,6 +651,7 @@ namespace lib_interval_tree
637651 friend const_interval_tree_iterator <node_type>;
638652 friend interval_tree_iterator <node_type>;
639653
654+ public:
640655 interval_tree ()
641656 : root_{nullptr }
642657 , size_{0 }
@@ -655,20 +670,38 @@ namespace lib_interval_tree
655670 operator =(other);
656671 }
657672
658- public:
673+ interval_tree (interval_tree&& other) noexcept
674+ : root_{other.root_ }
675+ , size_{other.size_ }
676+ {
677+ other.root_ = nullptr ;
678+ other.size_ = 0 ;
679+ }
680+
659681 interval_tree& operator =(interval_tree const & other)
660682 {
661683 if (!empty ())
662684 clear ();
663685
664686 if (other.root_ != nullptr )
665- root_ = copyTreeImpl (other.root_ , nullptr );
687+ root_ = copy_tree_impl (other.root_ , nullptr );
666688
667689 size_ = other.size_ ;
668690
669691 return *this ;
670692 }
671693
694+ interval_tree& operator =(interval_tree&& other) noexcept
695+ {
696+ if (!empty ())
697+ clear ();
698+
699+ root_ = other.root_ ;
700+ size_ = other.size_ ;
701+ other.root_ = nullptr ;
702+ other.size_ = 0 ;
703+ return *this ;
704+ }
672705 /* *
673706 * Removes all from this tree.
674707 */
0 commit comments