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