Here's a little quick and dirty square matirx multiply I've written. Ok. I know
this leaves a lot to be desired on the quality front, but I'm not in a position to
rewrite the whole system here!

The lambda function argument to accumulate is clearly not right, but how I
write something that implements the intention here?

Thanks, Rob.


typedef int block[ BLOCK_SIZE ][ BLOCK_SIZE ];

void matrix_product( block & result, const block & l, const block & r )
{
  typedef boost :: counting_iterator< unsigned > Iter;

  using namespace boost :: lambda;

  for ( unsigned y = 0; y != BLOCK_SIZE; ++ y )
    for ( unsigned x = 0; x != BLOCK_SIZE; ++ x )
      result[ y ][ x ] = std :: accumulate(
          Iter( 0 ), Iter( BLOCK_SIZE ), 0, l[ y ][ _1 ] * r[ _1 ][ x ] );
}