@@ -350,7 +350,9 @@ namespace lib_interval_tree
350
350
351
351
public:
352
352
constexpr basic_interval_tree_iterator (basic_interval_tree_iterator const &) = default;
353
+ constexpr basic_interval_tree_iterator (basic_interval_tree_iterator&& other) noexcept = default;
353
354
basic_interval_tree_iterator& operator =(basic_interval_tree_iterator const &) = default ;
355
+ basic_interval_tree_iterator& operator =(basic_interval_tree_iterator&& other) noexcept = default ;
354
356
355
357
bool operator !=(basic_interval_tree_iterator const & other) const
356
358
{
@@ -412,6 +414,12 @@ namespace lib_interval_tree
412
414
friend tree_type;
413
415
414
416
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
+
415
423
const_interval_tree_iterator& operator ++()
416
424
{
417
425
if (!node_)
@@ -524,6 +532,12 @@ namespace lib_interval_tree
524
532
friend tree_type;
525
533
526
534
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
+
527
541
interval_tree_iterator& operator ++()
528
542
{
529
543
if (!node_)
@@ -637,6 +651,7 @@ namespace lib_interval_tree
637
651
friend const_interval_tree_iterator <node_type>;
638
652
friend interval_tree_iterator <node_type>;
639
653
654
+ public:
640
655
interval_tree ()
641
656
: root_{nullptr }
642
657
, size_{0 }
@@ -655,20 +670,38 @@ namespace lib_interval_tree
655
670
operator =(other);
656
671
}
657
672
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
+
659
681
interval_tree& operator =(interval_tree const & other)
660
682
{
661
683
if (!empty ())
662
684
clear ();
663
685
664
686
if (other.root_ != nullptr )
665
- root_ = copyTreeImpl (other.root_ , nullptr );
687
+ root_ = copy_tree_impl (other.root_ , nullptr );
666
688
667
689
size_ = other.size_ ;
668
690
669
691
return *this ;
670
692
}
671
693
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
+ }
672
705
/* *
673
706
* Removes all from this tree.
674
707
*/
0 commit comments