summaryrefslogtreecommitdiff
path: root/src/array_view.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/array_view.hh')
-rw-r--r--src/array_view.hh9
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>;