summaryrefslogtreecommitdiff
path: root/src/array_view.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-03-09 13:21:43 +0000
committerMaxime Coste <frrrwww@gmail.com>2015-03-09 13:21:43 +0000
commit44f81d0b8b73367369de6be0757247a62876d4c1 (patch)
tree2adb468db91d5badd0a94ff01a4b08a970fa4678 /src/array_view.hh
parent0bbaef6e48c7a22b59e2c70304f6ccbf17324412 (diff)
constexprify ArrayView
Diffstat (limited to 'src/array_view.hh')
-rw-r--r--src/array_view.hh38
1 files changed, 19 insertions, 19 deletions
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<size_t N>
- ArrayView(const T(&array)[N]) : m_pointer(array), m_size(N) {}
+ constexpr ArrayView(const T(&array)[N]) : m_pointer(array), m_size(N) {}
template<typename Iterator>
- ArrayView(const Iterator& begin, const Iterator& end)
+ constexpr ArrayView(const Iterator& begin, const Iterator& end)
: m_pointer(&(*begin)), m_size(end - begin) {}
template<typename Alloc>
- ArrayView(const std::vector<T, Alloc>& v)
+ constexpr ArrayView(const std::vector<T, Alloc>& v)
: m_pointer(&v[0]), m_size(v.size()) {}
- ArrayView(const std::initializer_list<T>& v)
+ constexpr ArrayView(const std::initializer_list<T>& 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<const T*>;
- 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);
}