From 0be81997af931b8fd5ecf53741908bf43b6f4610 Mon Sep 17 00:00:00 2001 From: q66 Date: Fri, 7 Aug 2015 02:36:58 +0100 Subject: [PATCH] new iter utils for pointer ranges --- ostd/range.hh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/ostd/range.hh b/ostd/range.hh index 652a91e..04c08b6 100644 --- a/ostd/range.hh +++ b/ostd/range.hh @@ -970,9 +970,21 @@ PointerRange iter(T (&array)[N]) { return PointerRange(array, N); } -template -PointerRange iter(const T (&array)[N]) { - return PointerRange(array, N); +namespace detail { + struct PtrNat {}; +} + +template +PointerRange iter(T *a, U b, EnableIf< + (IsPointer::vvalue || IsNullPointer::value) && + IsConvertible::value, detail::PtrNat +> = detail::PtrNat()) { + return PointerRange(a, b); +} + +template +PointerRange iter(T *a, ostd::Size b) { + return PointerRange(a, b); } template