I'm writing some swig bindings to pass numpy arrays to code that uses
Eigen. I can unpack the data from the numpy arrays, so I have a
(float *data, int nx, int ny) tuple. I'd like to pass that to my
routines that expect Eigen::MatrixXf.

After Benoit's explanation, it looks as if I need to redo my interface
to expect Map<MatrixXf> or (to preserve the option of passing
MatrixXf) template them over the argument type --- for type safety,
Benoit proposes using MatrixBase<T>.

Fine, I can do that --- although the details of the swig typedefs will
be nasty as templates must be explicitly expanded. I can work on that.

I still think that the manual entry is confusing --- it maps an array
and then assigns it to a Matrix2f but all the mapping is doing is
initialising the memory. Note that the docs also talk about:

* This class represents a matrix or vector expression mapping an
existing array of data.
* It can be used to let Eigen interface without any overhead with
non-Eigen data structures,

* such as plain C arrays or structures from other libraries.

Which is true, but apparently not quite as simple as it might seem.

I'm not complaining, just explaining where the confusion comes from in
the hope of avoiding more.