forked from OctaForge/libostd
modify StringRange in the same way
This commit is contained in:
parent
dafd5a17b5
commit
ad0521bdfa
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue