From 11cb7b8372b475d35cf95c6c75de23030301fccd Mon Sep 17 00:00:00 2001 From: Rasmus Munk Larsen Date: Thu, 18 Nov 2021 14:31:42 -0800 Subject: [PATCH] Add basic iterator support for Eigen::array to ease transition to std::array in third-party libraries. --- unsupported/Eigen/CXX11/src/util/EmulateArray.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/unsupported/Eigen/CXX11/src/util/EmulateArray.h b/unsupported/Eigen/CXX11/src/util/EmulateArray.h index c5f9b88d5..e51001070 100644 --- a/unsupported/Eigen/CXX11/src/util/EmulateArray.h +++ b/unsupported/Eigen/CXX11/src/util/EmulateArray.h @@ -18,6 +18,10 @@ namespace Eigen { template class array { public: + typedef T value_type; + typedef T* iterator; + typedef const T* const_iterator; + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE T& operator[] (size_t index) { eigen_internal_assert(index < size()); return values[index]; } EIGEN_DEVICE_FUNC @@ -38,6 +42,16 @@ template class array { EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const T& back() const { return values[n-1]; } + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE iterator begin() { return values; } + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE const_iterator begin() const { return values; } + + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE iterator end() { return values + n; } + EIGEN_DEVICE_FUNC + EIGEN_STRONG_INLINE const_iterator end() const { return values + n; } + EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE static std::size_t size() { return n; }