
I'm having trouble using BOOST_FOREACH to iterate over Boost.MultiIndex containers. I've attached a testcase, which fails to compile because of what looks like an ADL collision between range_iterator's end() and boost::mpl::end. I'm using GCC 3.4.2 with foreach.hpp revision 1.22 from the sandbox. Others have reported that GCC 4.0.0 20050130 is also affected. (I'm aware that BOOST_FOREACH isn't part of Boost yet, but it's in the review queue so I thought posting this here was appropriate.) Regards, Eelis #include <boost/multi_index/sequenced_index.hpp> #include <boost/multi_index_container.hpp> #include <boost/foreach.hpp> namespace mi = boost::multi_index; typedef boost::multi_index_container<int, mi::indexed_by<mi::sequenced<> > > C; void f (C const & c) { for (C::const_iterator i = c.begin(); i != c.end(); ++i) { int r = *i; } // ok BOOST_FOREACH(int r, c) {} // errors }