From 052fa58be40a5f7aef941a6d3039043c2b83d043 Mon Sep 17 00:00:00 2001 From: q66 Date: Thu, 9 Feb 2017 22:48:28 +0100 Subject: [PATCH] clean up pointer range constructor --- ostd/array.hh | 4 ++-- ostd/range.hh | 13 +++---------- ostd/vector.hh | 4 ++-- 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/ostd/array.hh b/ostd/array.hh index 6f45f02..eb14d0d 100644 --- a/ostd/array.hh +++ b/ostd/array.hh @@ -15,14 +15,14 @@ namespace ostd { template struct ranged_traits> { static PointerRange iter(std::array &v) { - return PointerRange{v.data(), N}; + return PointerRange{v.data(), v.data() + N}; } }; template struct ranged_traits const> { static PointerRange iter(std::array const &v) { - return PointerRange{v.data(), N}; + return PointerRange{v.data(), v.data() + N}; } }; diff --git a/ostd/range.hh b/ostd/range.hh index 241ead5..17a3dda 100644 --- a/ostd/range.hh +++ b/ostd/range.hh @@ -1131,14 +1131,7 @@ private: public: PointerRange(): p_beg(nullptr), p_end(nullptr) {} - - template - PointerRange(T *beg, U end, std::enable_if_t< - (std::is_pointer_v || std::is_null_pointer_v) && - std::is_convertible_v, Nat - > = Nat()): p_beg(beg), p_end(end) {} - - PointerRange(T *beg, size_t n): p_beg(beg), p_end(beg + n) {} + PointerRange(T *beg, T *end): p_beg(beg), p_end(end) {} template @@ -1297,7 +1290,7 @@ private: template struct ranged_traits { static PointerRange iter(T (&array)[N]) { - return PointerRange(array, N); + return PointerRange(array, array + N); } }; @@ -1315,7 +1308,7 @@ inline PointerRange iter(T *a, U b, std::enable_if_t< template inline PointerRange iter(T *a, size_t b) { - return PointerRange(a, b); + return PointerRange(a, a + b); } template diff --git a/ostd/vector.hh b/ostd/vector.hh index da1a71c..34cef57 100644 --- a/ostd/vector.hh +++ b/ostd/vector.hh @@ -17,14 +17,14 @@ namespace ostd { template struct ranged_traits> { static PointerRange iter(std::vector &v) { - return PointerRange{v.data(), v.size()}; + return PointerRange{v.data(), v.data() + v.size()}; } }; template struct ranged_traits const> { static PointerRange iter(std::vector const &v) { - return PointerRange{v.data(), v.size()}; + return PointerRange{v.data(), v.data() + v.size()}; } };