On 9/26/05, jarvi
the var function makes a lambda functor out of a variable, so you can write the expression as:
var(n) = _1
Thanks, I should have seen that one in the manual. Posting at the end of a work day is obviously not a good idea :-) I've got another lambda related question though. My example was a useless simplification, what I'm really trying to do is to read data from a container v into a legacy matrix class which doesn't have an iterator. I can do this with a for loop: std::vector<char> v; MyMatrix<char> m; // Has h and w members for height and width, and element access using operator()( int i, int j ) std::vector<char>::iterator v_it = v.begin(); for ( long c = 0; c < m.h * m.w; ++c ) { m( c / m.w , c % m.w ) = *v_it; ++v_it; } This works perfectly. I figured it should be possible to do the same thing using for_each and boost::lambda, so I tried this approach: long c = 0; for_each( v.begin(), v.end(), ( var( m( c / m.w, c % m.w ) ) = _1, ++var( c ) ) ); This also fills MyMatrix, but with different values than the for loop. Which seems surprising to me. As far as I can tell, these two approaches should be equivalent, but apparently they're not. Anyone care to explain to me why? P.S. Sorry for the unfinished post which got through. Please ignore that one. -- Alex Borghgraef