diff options
| author | Maxime Coste <mawww@kakoune.org> | 2023-11-10 16:32:27 +1100 |
|---|---|---|
| committer | Maxime Coste <mawww@kakoune.org> | 2023-11-10 16:35:46 +1100 |
| commit | fbbced5ed06236f36648b02f40845a5e17763857 (patch) | |
| tree | 9ea9860046604bd2f4d34c76516b0072007b2259 /src | |
| parent | feeacd8de966cdef63d7a614e95e3e01a70db21a (diff) | |
Support building ArrayView from contigous iterators
Diffstat (limited to 'src')
| -rw-r--r-- | src/array_view.hh | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/array_view.hh b/src/array_view.hh index 2d971089..98f3c811 100644 --- a/src/array_view.hh +++ b/src/array_view.hh @@ -27,6 +27,11 @@ public: constexpr ArrayView(T* begin, T* end) : m_pointer(begin), m_size(end - begin) {} + template<typename It> + requires std::contiguous_iterator<It> and std::is_same_v<std::iter_value_t<It>, T> + constexpr ArrayView(It begin, It end) + : m_pointer(&*begin), m_size(end - begin) {} + template<size_t N> constexpr ArrayView(T(&array)[N]) : m_pointer(array), m_size(N) {} @@ -68,6 +73,10 @@ private: size_t m_size; }; +template<typename It> + requires std::contiguous_iterator<It> +ArrayView(It begin, It end) -> ArrayView<std::iter_value_t<It>>; + template<typename T> using ConstArrayView = ArrayView<const T>; |
