ensure correct ctor overload resolution on char/pointer range for two pointers vs pointer plus size when passed int (or similar)
This commit is contained in:
parent
da4c3a0947
commit
50a8562d20
|
@ -815,8 +815,18 @@ NumberRange<T> range(T v) {
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct PointerRange: InputRange<PointerRange<T>, ContiguousRangeTag, T> {
|
struct PointerRange: InputRange<PointerRange<T>, ContiguousRangeTag, T> {
|
||||||
|
private:
|
||||||
|
struct Nat {};
|
||||||
|
|
||||||
|
public:
|
||||||
PointerRange(): p_beg(nullptr), p_end(nullptr) {}
|
PointerRange(): p_beg(nullptr), p_end(nullptr) {}
|
||||||
PointerRange(T *beg, T *end): p_beg(beg), p_end(end) {}
|
|
||||||
|
template<typename U>
|
||||||
|
PointerRange(T *beg, U end, EnableIf<
|
||||||
|
(IsPointer<U>::value || IsNullPointer<U>::value) &&
|
||||||
|
IsConvertible<U, T *>::value, Nat
|
||||||
|
> = Nat()): p_beg(beg), p_end(end) {}
|
||||||
|
|
||||||
PointerRange(T *beg, Size n): p_beg(beg), p_end(beg + n) {}
|
PointerRange(T *beg, Size n): p_beg(beg), p_end(beg + n) {}
|
||||||
|
|
||||||
template<typename U, typename = EnableIf<
|
template<typename U, typename = EnableIf<
|
||||||
|
|
|
@ -29,7 +29,13 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
CharRangeBase(): p_beg(nullptr), p_end(nullptr) {};
|
CharRangeBase(): p_beg(nullptr), p_end(nullptr) {};
|
||||||
CharRangeBase(T *beg, T *end): p_beg(beg), p_end(end) {}
|
|
||||||
|
template<typename U>
|
||||||
|
CharRangeBase(T *beg, U end, EnableIf<
|
||||||
|
(IsPointer<U>::value || IsNullPointer<U>::value) &&
|
||||||
|
IsConvertible<U, T *>::value, Nat
|
||||||
|
> = Nat()): p_beg(beg), p_end(end) {}
|
||||||
|
|
||||||
CharRangeBase(T *beg, Size n): p_beg(beg), p_end(beg + n) {}
|
CharRangeBase(T *beg, Size n): p_beg(beg), p_end(beg + n) {}
|
||||||
|
|
||||||
/* TODO: traits for utf-16/utf-32 string lengths, for now assume char */
|
/* TODO: traits for utf-16/utf-32 string lengths, for now assume char */
|
||||||
|
|
Loading…
Reference in a new issue