From ac522bc9e174ec7459796f21d0c196aac54a6402 Mon Sep 17 00:00:00 2001 From: Dave Abrahams Date: Sat, 28 Nov 2009 18:53:43 +0000 Subject: [PATCH] category of each component iterator is reduced to a known category before we try to find a minimum. Closes #1517 [SVN r58012] --- include/boost/iterator/zip_iterator.hpp | 2 +- test/zip_iterator_test.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) mode change 100755 => 100644 include/boost/iterator/zip_iterator.hpp mode change 100755 => 100644 test/zip_iterator_test.cpp diff --git a/include/boost/iterator/zip_iterator.hpp b/include/boost/iterator/zip_iterator.hpp old mode 100755 new mode 100644 index f3896ad..a468070 --- a/include/boost/iterator/zip_iterator.hpp +++ b/include/boost/iterator/zip_iterator.hpp @@ -357,7 +357,7 @@ namespace boost { { typedef typename tuple_impl_specific::tuple_meta_transform< IteratorTuple - , iterator_traversal<> + , pure_traversal_tag > >::type tuple_of_traversal_tags; typedef typename tuple_impl_specific::tuple_meta_accumulate< diff --git a/test/zip_iterator_test.cpp b/test/zip_iterator_test.cpp old mode 100755 new mode 100644 index c6692d2..8062f08 --- a/test/zip_iterator_test.cpp +++ b/test/zip_iterator_test.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -60,6 +61,27 @@ struct pure_traversal typename boost::iterator_traversal::type > {}; + + +/// Tests for https://svn.boost.org/trac/boost/ticket/1517 +int to_value(int const &v) +{ + return v; +} + +void category_test() +{ + std::list rng1; + std::string rng2; + + boost::make_zip_iterator( + boost::make_tuple( + boost::make_transform_iterator(rng1.begin(), &to_value), // BidirectionalInput + rng2.begin() // RandomAccess + ) + ); +} +/// ///////////////////////////////////////////////////////////////////////////// // @@ -70,6 +92,8 @@ struct pure_traversal int main( void ) { + category_test(); + std::cout << "\n" << "***********************************************\n" << "* *\n"