[eigen] Recursion and block matrices

I haven't been able to figure out how to write a routine that calls itself recursively with successively smaller sub-blocks of the original matrix. Here is a simple example, which, adds the identity matrix to the main diagonal of the input matrix (the point is
```to illustrate the recursion/blocks issue :-) ).

```
//////////////////////////////// CODE //////////////////////////////////////////////////////////////////////////////
```#include <Eigen/Core>
using namespace Eigen;

#include <iostream>
using namespace std;

template< class Derived >
void incr( const DenseBase< Derived >& mat )
{
DenseBase< Derived >& matV =
const_cast< DenseBase< Derived >& >( mat );

++matV(0,0);       // <--------- Line 13

if( ( 1 == mat.rows() ) ||
( 1 == mat.cols() ) )
{
return;
}
else
{
incr( mat.bottomRightCorner( mat.rows() - 1,
mat.cols() - 1 ) );
}
}// incr

int main( int argc, char* argv[] )
{
MatrixXd mat( 2, 3 );
mat << 1, 2, 3, 4, 5, 6;
cout << "Before: " << mat << endl;

incr( mat );

cout << "After: " << mat << endl;
return 0;
}// main
```
//////////////////////////////// END CODE /////////////////////////////////////////////////////////////
```
The current error is,

Line 13:3: error: lvalue required as increment operand

which makes sense, since not all expressions are l-values.
I've tried replacing "DenseBase" with various combinations of Map and Block,
but no success.

Any suggestions?

```
On a related issue, Block< Block > is, conceptually, simply a Block (at least at run-time).
```Any comments on how this "meta complexity" is addressed, in general?

Thank you.

```

 Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/