forked from OctaForge/libostd
new iter utils for pointer ranges
parent
44d2600067
commit
0be81997af
|
@ -970,9 +970,21 @@ PointerRange<T> iter(T (&array)[N]) {
|
||||||
return PointerRange<T>(array, N);
|
return PointerRange<T>(array, N);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T, Size N>
|
namespace detail {
|
||||||
PointerRange<const T> iter(const T (&array)[N]) {
|
struct PtrNat {};
|
||||||
return PointerRange<const T>(array, N);
|
}
|
||||||
|
|
||||||
|
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>
|
template<typename T, typename S>
|
||||||
|
|
Loading…
Reference in New Issue