better range constraints

master
Daniel Kolesa 2015-07-28 02:40:24 +01:00
parent bf8be04b01
commit df4b169aa8
1 changed files with 10 additions and 4 deletions

View File

@ -386,6 +386,9 @@ public:
HalfRange<RangeHalf> iter(const RangeHalf &other) const {
return HalfRange<RangeHalf>(*this, other);
}
RangeValue<T> *data() { return p_range.data(); }
const RangeValue<T> *data() const { return p_range.data(); }
};
template<typename R>
@ -622,12 +625,15 @@ public:
bool put(RangeValue<Rtype> &&v) {
return p_beg.range().put(move(v));
}
RangeValue<Rtype> *data() { return p_beg.data(); }
const RangeValue<Rtype> *data() const { return p_beg.data(); }
};
template<typename T>
struct ReverseRange: InputRange<ReverseRange<T>,
RangeCategory<T>, RangeValue<T>, RangeReference<T>, RangeSize<T>,
RangeDifference<T>
CommonType<RangeCategory<T>, FiniteRandomAccessRangeTag>,
RangeValue<T>, RangeReference<T>, RangeSize<T>, RangeDifference<T>
> {
private:
using Rref = RangeReference<T>;
@ -700,8 +706,8 @@ public:
template<typename T>
struct MoveRange: InputRange<MoveRange<T>,
RangeCategory<T>, RangeValue<T>, RangeValue<T> &&, RangeSize<T>,
RangeDifference<T>
CommonType<RangeCategory<T>, FiniteRandomAccessRangeTag>,
RangeValue<T>, RangeValue<T> &&, RangeSize<T>, RangeDifference<T>
> {
private:
using Rval = RangeValue<T>;