
Would anyone be interested in having a couple of extra specialized iterator adaptors in Boost.Iterator? I'm thinking of 'key_iterator' and 'value_iterator' adaptors (along with convenience 'make_key_iterator' and 'make_value_iterator' functions) that allow any associative container (that follows standard library idioms) to be accessed as either a range of keys or as a range of values. They'd be used like this: std::map<std::string,int> m; std::for_each(make_value_iterator(m.begin()),make_value_iterator(m.end()),func); Where func() takes an int parameter rather than a std::pair<const std::string,int>. Using these adaptors is considerably easier than using boost.lambda for this purpose and they can be implemented to incur no (or negligable) runtime overhead when compared to iterating normally through an associative container. I find these useful - does anyone else?