diff --git a/src/array_view.hh b/src/array_view.hh index 14f7e5b4..4e3d7775 100644 --- a/src/array_view.hh +++ b/src/array_view.hh @@ -15,49 +15,49 @@ class ArrayView public: using size_t = std::size_t; - ArrayView() + constexpr ArrayView() : m_pointer(nullptr), m_size(0) {} - ArrayView(const T& oneval) + constexpr ArrayView(const T& oneval) : m_pointer(&oneval), m_size(1) {} - ArrayView(const T* pointer, size_t size) + constexpr ArrayView(const T* pointer, size_t size) : m_pointer(pointer), m_size(size) {} - ArrayView(const T* begin, const T* end) + constexpr ArrayView(const T* begin, const T* end) : m_pointer(begin), m_size(end - begin) {} template - ArrayView(const T(&array)[N]) : m_pointer(array), m_size(N) {} + constexpr ArrayView(const T(&array)[N]) : m_pointer(array), m_size(N) {} template - ArrayView(const Iterator& begin, const Iterator& end) + constexpr ArrayView(const Iterator& begin, const Iterator& end) : m_pointer(&(*begin)), m_size(end - begin) {} template - ArrayView(const std::vector& v) + constexpr ArrayView(const std::vector& v) : m_pointer(&v[0]), m_size(v.size()) {} - ArrayView(const std::initializer_list& v) + constexpr ArrayView(const std::initializer_list& v) : m_pointer(v.begin()), m_size(v.size()) {} - const T* pointer() const { return m_pointer; } - size_t size() const { return m_size; } - const T& operator[](size_t n) const { return *(m_pointer + n); } + constexpr const T* pointer() const { return m_pointer; } + constexpr size_t size() const { return m_size; } + constexpr const T& operator[](size_t n) const { return *(m_pointer + n); } - const T* begin() const { return m_pointer; } - const T* end() const { return m_pointer+m_size; } + constexpr const T* begin() const { return m_pointer; } + constexpr const T* end() const { return m_pointer+m_size; } using reverse_iterator = std::reverse_iterator; - reverse_iterator rbegin() const { return reverse_iterator(m_pointer+m_size); } - reverse_iterator rend() const { return reverse_iterator(m_pointer); } + constexpr reverse_iterator rbegin() const { return reverse_iterator(m_pointer+m_size); } + constexpr reverse_iterator rend() const { return reverse_iterator(m_pointer); } - const T& front() const { return *m_pointer; } - const T& back() const { return *(m_pointer + m_size - 1); } + constexpr const T& front() const { return *m_pointer; } + constexpr const T& back() const { return *(m_pointer + m_size - 1); } - bool empty() const { return m_size == 0; } + constexpr bool empty() const { return m_size == 0; } - ArrayView subrange(size_t first, size_t count) const + constexpr ArrayView subrange(size_t first, size_t count) const { return ArrayView(m_pointer + first, count); }