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 ] );
}