modify StringRange in the same way

master
Daniel Kolesa 2015-06-17 02:00:39 +01:00
parent dafd5a17b5
commit ad0521bdfa
1 changed files with 5 additions and 2 deletions

View File

@ -23,8 +23,6 @@ struct StringRangeBase: InputRange<
StringRangeBase<T>, FiniteRandomAccessRangeTag, T
> {
StringRangeBase(): p_beg(nullptr), p_end(nullptr) {}
StringRangeBase(const StringRangeBase &v): p_beg(v.p_beg),
p_end(v.p_end) {}
StringRangeBase(T *beg, T *end): p_beg(beg), p_end(end) {}
StringRangeBase(T *beg, octa::Size n): p_beg(beg), p_end(beg + n) {}
/* TODO: traits for utf-16/utf-32 string lengths, for now assume char */
@ -32,6 +30,11 @@ struct StringRangeBase: InputRange<
StringRangeBase(const StringBase<T> &s): p_beg(s.data()),
p_end(s.data() + s.size()) {}
template<typename U>
StringRangeBase(const StringRangeBase<U> &v, octa::EnableIf<
octa::IsConvertible<U *, T *>::value, bool
> = true): p_beg(&v[0]), p_end(&v[v.size()]) {}
StringRangeBase &operator=(const StringRangeBase &v) {
p_beg = v.p_beg; p_end = v.p_end; return *this;
}