Markus Thanks for the reply, but no dice. The idea was to use the address of the current item as a quick and dirty counter modular counter, However this code: std::for_each(begin, end, l::_1 = l::ll_static_cast<int>(_1) % 3); does not take the address but the items value, and unfortunately this: std::for_each(begin, end, l::_1 = l::ll_static_cast<int>(&_1) % 3); does not compile. Now I could get a bit more realistic and just code the thing a bit cleaner like this: int x = 0; for_each( lookup_, lookup_ + (sizeof(lookup_) / sizeof(unsigned int)), _1 = ++var(x) % 3 ); But that's kinda skirting around the real issue which is, if I can't use lambda to *directly* replace code that is trivial with a hand written loop, what chance when the complexity is raised a bit? Cheers Ian