assignment op overloads for reverserange/moverange (c++ deletes them because of move ctor)

master
Daniel Kolesa 2015-04-18 20:31:07 +01:00
parent 0ac7bb4302
commit 35424dd248
2 changed files with 34 additions and 3 deletions

View File

@ -82,6 +82,23 @@ namespace octa {
ReverseRange(const ReverseRange &it): p_range(it.p_range) {}
ReverseRange(ReverseRange &&it): p_range(move(it.p_range)) {}
ReverseRange &operator=(const ReverseRange &v) {
p_range = v.p_range;
return *this;
}
ReverseRange &operator=(ReverseRange &&v) {
p_range = move(v.p_range);
return *this;
}
ReverseRange &operator=(const T &v) {
p_range = v;
return *this;
}
ReverseRange &operator=(T &&v) {
p_range = forward<T>(v);
return *this;
}
bool empty () const { return p_range.empty (); }
size_t length() const { return p_range.length(); }
@ -128,6 +145,23 @@ namespace octa {
MoveRange(const MoveRange &it): p_range(it.p_range) {}
MoveRange(MoveRange &&it): p_range(move(it.p_range)) {}
MoveRange &operator=(const MoveRange &v) {
p_range = v.p_range;
return *this;
}
MoveRange &operator=(MoveRange &&v) {
p_range = move(v.p_range);
return *this;
}
MoveRange &operator=(const T &v) {
p_range = v;
return *this;
}
MoveRange &operator=(T &&v) {
p_range = forward<T>(v);
return *this;
}
bool empty () const { return p_range.empty (); }
size_t length() const { return p_range.length(); }

View File

@ -23,9 +23,6 @@ namespace octa {
struct VectorRange: InputRangeBase<VectorRange<T>, RandomAccessRange, T> {
VectorRange(): p_beg(nullptr), p_end(nullptr) {}
VectorRange(const VectorRange &v): p_beg(v.p_beg), p_end(v.p_end) {}
VectorRange(VectorRange &&v): p_beg(v.p_beg), p_end(v.p_end) {
v.p_beg = v.p_end = nullptr;
}
VectorRange(T *beg, T *end): p_beg(beg), p_end(end) {}
bool operator==(const VectorRange &v) const {