Index: /trunk/boost/foreach_fwd.hpp =================================================================== --- /trunk/boost/foreach_fwd.hpp (revision 62661) +++ /trunk/boost/foreach_fwd.hpp (revision 75540) @@ -15,4 +15,6 @@ #define BOOST_FOREACH_FWD_HPP +#include // for std::pair + // This must be at global scope, hence the uglified name enum boost_foreach_argument_dependent_lookup_hack @@ -26,4 +28,7 @@ namespace foreach { + template + std::pair in_range(T begin, T end); + /////////////////////////////////////////////////////////////////////////////// // boost::foreach::tag @@ -47,4 +52,22 @@ } // namespace foreach +// Workaround for unfortunate https://svn.boost.org/trac/boost/ticket/6131 +namespace BOOST_FOREACH +{ + using foreach::in_range; + using foreach::tag; + + template + struct is_lightweight_proxy + : foreach::is_lightweight_proxy + {}; + + template + struct is_noncopyable + : foreach::is_noncopyable + {}; + +} // namespace BOOST_FOREACH + } // namespace boost Index: /trunk/boost/foreach.hpp =================================================================== --- /trunk/boost/foreach.hpp (revision 75077) +++ /trunk/boost/foreach.hpp (revision 75540) @@ -166,5 +166,5 @@ // at the global namespace for your type. template -inline boost::foreach::is_lightweight_proxy * +inline boost::BOOST_FOREACH::is_lightweight_proxy * boost_foreach_is_lightweight_proxy(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; } @@ -191,5 +191,5 @@ // at the global namespace for your type. template -inline boost::foreach::is_noncopyable * +inline boost::BOOST_FOREACH::is_noncopyable * boost_foreach_is_noncopyable(T *&, BOOST_FOREACH_TAG_DEFAULT) { return 0; }