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