Ticket #5061: range.patch

File range.patch, 3.9 KB (added by aschoedl@…, 12 years ago)
  • ./VC/boost_1_45_0/boost/range/adaptor/transformed.hpp

     
    3939        public:
    4040            typedef F transform_fn_type;
    4141            typedef R source_range_type;
    4242           
    4343            transform_range( F f, R& r )
    44                 : base( make_transform_iterator( boost::begin(r), f ),
    45                         make_transform_iterator( boost::end(r), f ) )
     44                                // boost:: to suppress ADL which causes ambiguity with boost::interprocess::make_transform_iterator
     45                                : base( boost::make_transform_iterator( boost::begin(r), f ),
     46                                                boost::make_transform_iterator( boost::end(r), f ) )
    4647           
    4748            { }
    4849        };
    4950
    5051        template< class T >
  • ./VC/boost_1_45_0/boost/range/detail/demote_iterator_traversal_tag.hpp

     
    1717{
    1818    namespace range_detail
    1919    {
    2020
    2121template<class IteratorTraversalTag1, class IteratorTraversalTag2>
    22 struct demote_iterator_traversal_tag
     22struct inner_demote_iterator_traversal_tag
    2323{
    2424};
    2525
    2626#define BOOST_DEMOTE_TRAVERSAL_TAG( Tag1, Tag2, ResultTag ) \
    27 template<> struct demote_iterator_traversal_tag< Tag1 , Tag2 > \
     27template<> struct inner_demote_iterator_traversal_tag< Tag1 , Tag2 > \
    2828{ \
    2929    typedef ResultTag type; \
    3030};
    3131
    3232BOOST_DEMOTE_TRAVERSAL_TAG( no_traversal_tag, no_traversal_tag,            no_traversal_tag )
     
    7070BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, forward_traversal_tag,       forward_traversal_tag       )
    7171BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, bidirectional_traversal_tag, bidirectional_traversal_tag )
    7272BOOST_DEMOTE_TRAVERSAL_TAG( random_access_traversal_tag, random_access_traversal_tag, random_access_traversal_tag )
    7373
    7474#undef BOOST_DEMOTE_TRAVERSAL_TAG
     75
     76template<class IteratorTraversalTag1, class IteratorTraversalTag2>
     77struct demote_iterator_traversal_tag: inner_demote_iterator_traversal_tag<
     78        typename boost::detail::pure_traversal_tag< IteratorTraversalTag1 >::type,
     79        typename boost::detail::pure_traversal_tag< IteratorTraversalTag2 >::type
     80>
     81{
     82};
    7583
    7684    } // namespace range_detail
    7785} // namespace boost
    7886
    7987#endif // include guard
  • ./VC/boost_1_45_0/boost/range/detail/join_iterator.hpp

     
    118118};
    119119
    120120template<typename Iterator1
    121121       , typename Iterator2
    122122       , typename ValueType = typename iterator_value<Iterator1>::type
    123        , typename Reference = typename iterator_reference<Iterator1>::type
     123       // find least demanding, commonly supported reference type, in the order &, const& and by-value:
     124       , typename Reference = typename mpl::if_c<
     125            !is_reference< typename iterator_reference<Iterator1>::type >::value
     126            || !is_reference< typename iterator_reference<Iterator2>::type >::value,
     127                        typename remove_const<
     128                                typename remove_reference<
     129                                        typename iterator_reference<Iterator1>::type
     130                                >::type
     131                        >::type,
     132                        typename mpl::if_c<
     133                                is_const<
     134                                        typename remove_reference<
     135                                                typename iterator_reference<Iterator1>::type
     136                                        >::type
     137                                >::value
     138                                || is_const<
     139                                        typename remove_reference<
     140                                                typename iterator_reference<Iterator2>::type
     141                                        >::type
     142                                >::value,
     143                                typename add_const<
     144                                        typename iterator_reference<Iterator1>::type
     145                                >::type,
     146                                typename iterator_reference<Iterator1>::type
     147                        >::type
     148                >::type
    124149       , typename Traversal = typename demote_iterator_traversal_tag<
    125150                                  typename iterator_traversal<Iterator1>::type
    126151                                , typename iterator_traversal<Iterator2>::type>::type
    127152>
    128153class join_iterator