From f46f7f809194f51089da16acc96db0139bd8b99b Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Wed, 19 Nov 2003 22:04:02 +0000 Subject: [PATCH] vc6 workarounds [SVN r20869] --- .../boost/iterator/detail/minimum_category.hpp | 12 ++++++++++-- include/boost/iterator/zip_iterator.hpp | 15 ++++++++------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/include/boost/iterator/detail/minimum_category.hpp b/include/boost/iterator/detail/minimum_category.hpp index bb323f1..b1fcd9f 100755 --- a/include/boost/iterator/detail/minimum_category.hpp +++ b/include/boost/iterator/detail/minimum_category.hpp @@ -63,7 +63,7 @@ struct minimum_category_impl }; }; -template +template struct minimum_category { typedef minimum_category_impl< @@ -75,7 +75,15 @@ struct minimum_category typedef typename inner::type type; BOOST_MPL_AUX_LAMBDA_SUPPORT(2,minimum_category,(T1,T2)) - }; +}; + +template <> +struct minimum_category +{ + template + struct apply : minimum_category + {}; +}; # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) template <> diff --git a/include/boost/iterator/zip_iterator.hpp b/include/boost/iterator/zip_iterator.hpp index 5b52683..f48ee53 100755 --- a/include/boost/iterator/zip_iterator.hpp +++ b/include/boost/iterator/zip_iterator.hpp @@ -261,16 +261,17 @@ namespace boost { ) { typedef typename tuple_meta_transform< - typename Tuple::tail_type + BOOST_DEDUCED_TYPENAME Tuple::tail_type , Fun >::type transformed_tail_type; return tuples::cons< - typename mpl::apply1::type + BOOST_DEDUCED_TYPENAME mpl::apply1< + Fun, BOOST_DEDUCED_TYPENAME Tuple::head_type + >::type , transformed_tail_type >( - f(boost::tuples::get<0>(t)), - tuple_transform(t.get_tail(), f) + f(boost::tuples::get<0>(t)), tuple_transform(t.get_tail(), f) ); } @@ -382,12 +383,12 @@ namespace boost { { typedef typename tuple_impl_specific::tuple_meta_transform< IteratorTuple - , iterator_traversal + , iterator_traversal<> >::type tuple_of_traversal_tags; typedef typename tuple_impl_specific::tuple_meta_accumulate< tuple_of_traversal_tags - , minimum_category + , minimum_category<> , random_access_traversal_tag >::type type; }; @@ -557,7 +558,7 @@ namespace boost { { detail::tuple_impl_specific::tuple_for_each( m_iterator_tuple, - detail::advance_iterator(n) + detail::advance_iterator(n) ); } // Incrementing a zip iterator means to increment all iterators in