#include #include #include #include // memset #include union block { char buffer[512]; int integer[128]; }; std::size_t sum( block* blk ) { using namespace boost::lambda; std::size_t sum = 0; std::for_each( &blk->buffer[0], &blk->buffer[0] + sizeof( blk->buffer ), sum += *_1 ); return sum; } int main() { using namespace boost::lambda; block blk; std::memset( &blk.buffer[0], '1', sizeof( blk.buffer ) ); std::for_each( &blk.buffer[0], &blk.buffer[0] + sizeof( blk.buffer ), std::cout << *_1 << '\n' ); std::cout << sum( &blk ) << std::endl; }