forked from OctaForge/libostd
assignment op overloads for reverserange/moverange (c++ deletes them because of move ctor)
parent
0ac7bb4302
commit
35424dd248
34
octa/range.h
34
octa/range.h
|
@ -82,6 +82,23 @@ namespace octa {
|
||||||
ReverseRange(const ReverseRange &it): p_range(it.p_range) {}
|
ReverseRange(const ReverseRange &it): p_range(it.p_range) {}
|
||||||
ReverseRange(ReverseRange &&it): p_range(move(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 (); }
|
bool empty () const { return p_range.empty (); }
|
||||||
size_t length() const { return p_range.length(); }
|
size_t length() const { return p_range.length(); }
|
||||||
|
|
||||||
|
@ -128,6 +145,23 @@ namespace octa {
|
||||||
MoveRange(const MoveRange &it): p_range(it.p_range) {}
|
MoveRange(const MoveRange &it): p_range(it.p_range) {}
|
||||||
MoveRange(MoveRange &&it): p_range(move(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 (); }
|
bool empty () const { return p_range.empty (); }
|
||||||
size_t length() const { return p_range.length(); }
|
size_t length() const { return p_range.length(); }
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,6 @@ namespace octa {
|
||||||
struct VectorRange: InputRangeBase<VectorRange<T>, RandomAccessRange, T> {
|
struct VectorRange: InputRangeBase<VectorRange<T>, RandomAccessRange, T> {
|
||||||
VectorRange(): p_beg(nullptr), p_end(nullptr) {}
|
VectorRange(): p_beg(nullptr), p_end(nullptr) {}
|
||||||
VectorRange(const VectorRange &v): p_beg(v.p_beg), p_end(v.p_end) {}
|
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) {}
|
VectorRange(T *beg, T *end): p_beg(beg), p_end(end) {}
|
||||||
|
|
||||||
bool operator==(const VectorRange &v) const {
|
bool operator==(const VectorRange &v) const {
|
||||||
|
|
Loading…
Reference in New Issue