--- ./VC/boost_1_45_0/boost/range/adaptor/transformed.hpp Thu Dec 23 14:41:21 2010 +++ ./VC/boost_1_45_0/boost/range/adaptor/transformed.hpp Tue Jan 11 16:48:15 2011 @@ -39,12 +39,13 @@ public: typedef F transform_fn_type; typedef R source_range_type; transform_range( F f, R& r ) - : base( make_transform_iterator( boost::begin(r), f ), - make_transform_iterator( boost::end(r), f ) ) + // boost:: to suppress ADL which causes ambiguity with boost::interprocess::make_transform_iterator + : base( boost::make_transform_iterator( boost::begin(r), f ), + boost::make_transform_iterator( boost::end(r), f ) ) { } }; template< class T > --- ./VC/boost_1_45_0/boost/range/detail/demote_iterator_traversal_tag.hpp Thu Dec 23 14:41:23 2010 +++ ./VC/boost_1_45_0/boost/range/detail/demote_iterator_traversal_tag.hpp Tue Jan 11 12:30:18 2011 @@ -17,16 +17,16 @@ { namespace range_detail { template -struct demote_iterator_traversal_tag +struct inner_demote_iterator_traversal_tag { }; #define BOOST_DEMOTE_TRAVERSAL_TAG( Tag1, Tag2, ResultTag ) \ -template<> struct demote_iterator_traversal_tag< Tag1 , Tag2 > \ +template<> struct inner_demote_iterator_traversal_tag< Tag1 , Tag2 > \ { \ typedef ResultTag type; \ }; BOOST_DEMOTE_TRAVERSAL_TAG( no_traversal_tag, no_traversal_tag, no_traversal_tag ) @@ -70,10 +70,18 @@ BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, forward_traversal_tag, forward_traversal_tag ) BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, bidirectional_traversal_tag, bidirectional_traversal_tag ) BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, random_access_traversal_tag, random_access_traversal_tag ) #undef BOOST_DEMOTE_TRAVERSAL_TAG + +template +struct demote_iterator_traversal_tag: inner_demote_iterator_traversal_tag< + typename boost::detail::pure_traversal_tag< IteratorTraversalTag1 >::type, + typename boost::detail::pure_traversal_tag< IteratorTraversalTag2 >::type +> +{ +}; } // namespace range_detail } // namespace boost #endif // include guard --- ./VC/boost_1_45_0/boost/range/detail/join_iterator.hpp Thu Dec 23 14:41:23 2010 +++ ./VC/boost_1_45_0/boost/range/detail/join_iterator.hpp Tue Jan 11 16:57:04 2011 @@ -118,11 +118,36 @@ }; template::type - , typename Reference = typename iterator_reference::type + // find least demanding, commonly supported reference type, in the order &, const& and by-value: + , typename Reference = typename mpl::if_c< + !is_reference< typename iterator_reference::type >::value + || !is_reference< typename iterator_reference::type >::value, + typename remove_const< + typename remove_reference< + typename iterator_reference::type + >::type + >::type, + typename mpl::if_c< + is_const< + typename remove_reference< + typename iterator_reference::type + >::type + >::value + || is_const< + typename remove_reference< + typename iterator_reference::type + >::type + >::value, + typename add_const< + typename iterator_reference::type + >::type, + typename iterator_reference::type + >::type + >::type , typename Traversal = typename demote_iterator_traversal_tag< typename iterator_traversal::type , typename iterator_traversal::type>::type > class join_iterator