
On Sun, Dec 13, 2009 at 6:41 PM, Nat Goodspeed
Eric Niebler wrote:
Why not:
int index = 0;
BOOST_FOREACH(const Foo &f, foos) { // ... stuff ... ++index; }
What value BOOST_FOREACH has comes primarily from its ability to simplify something that's already pretty darn simple -- a plain for(;;) loop. I strongly resist any effort to make BOOST_FOREACH more complicated, unless the wins are truly significant. In this case, I don't think they are.
Maybe this shouldn't be a BOOST_FOREACH feature at all. As with Python's builtin enumerate() function, maybe what we want here is an iterator adapter that dereferences to a std::pair
?
Ooo, that makes sense, as long as it can still be done quickly (ala the in index = 0; example above): BOOST_FOREACH(size_t i, const Foo &f, ENUMERATE(foos)) Or maybe: BOOST_FOREACH_ENUMERATE(size_t i, const Foo &f, foos)