new iter utils for pointer ranges

master
Daniel Kolesa 2015-08-07 02:36:58 +01:00
parent 44d2600067
commit 0be81997af
1 changed files with 15 additions and 3 deletions

View File

@ -970,9 +970,21 @@ PointerRange<T> iter(T (&array)[N]) {
return PointerRange<T>(array, N);
}
template<typename T, Size N>
PointerRange<const T> iter(const T (&array)[N]) {
return PointerRange<const T>(array, N);
namespace detail {
struct PtrNat {};
}
template<typename T, typename U>
PointerRange<T> iter(T *a, U b, EnableIf<
(IsPointer<U>::vvalue || IsNullPointer<U>::value) &&
IsConvertible<U, T *>::value, detail::PtrNat
> = detail::PtrNat()) {
return PointerRange<T>(a, b);
}
template<typename T>
PointerRange<T> iter(T *a, ostd::Size b) {
return PointerRange<T>(a, b);
}
template<typename T, typename S>