Foreach loops over Eigen matrices?

c++11, eigen, foreach

Solution

Range-based for loops need the methods `.begin()` and `.end()` to be implemented on that type, which they are not for Eigen matrices. However, as a pointer is also a valid random access iterator in C++, the methods `.data()` and `.data() + .size()` can be used for the begin and end functions for any of the STL algorithms.

Problem

Is it possible to use the foreach syntax of C++11 with Eigen matrices? For instance, if I wanted to compute the sum of a matrix (I know there's a builtin function for this, I just wanted a simple example) I'd like to do something like ``` Matrix2d a; a << 1, 2, 3, 4; double sum = 0.0; for(double d : a) { sum += d; } ``` However Eigen doesn't seem to allow it. Is there a more natural way to do a foreach loop over elements of an Eigen matrix?

Original source