diff --git a/include/boost/iterator/zip_iterator.hpp b/include/boost/iterator/zip_iterator.hpp index 83fa63b..3675c0f 100644 --- a/include/boost/iterator/zip_iterator.hpp +++ b/include/boost/iterator/zip_iterator.hpp @@ -84,7 +84,7 @@ namespace iterators { struct result { typedef typename - remove_reference::type>::type + remove_cv::type>::type iterator; typedef typename iterator_reference::type type; diff --git a/test/detail/zip_iterator_test.ipp b/test/detail/zip_iterator_test.ipp index f659099..437cc49 100644 --- a/test/detail/zip_iterator_test.ipp +++ b/test/detail/zip_iterator_test.ipp @@ -58,6 +58,18 @@ int main() BOOST_TEST(boost::fusion::at_c<1>(*(i + 1)) == "pyonpyon"); } + { + // Trac #12895 + boost::zip_iterator< + TUPLE + > i(MAKE_TUPLE(vi.data(), vs.data())); + + BOOST_TEST(boost::fusion::at_c<0>(* i ) == 42); + BOOST_TEST(boost::fusion::at_c<1>(* i ) == "kokoro"); + BOOST_TEST(boost::fusion::at_c<0>(*(i + 1)) == 72); + BOOST_TEST(boost::fusion::at_c<1>(*(i + 1)) == "pyonpyon"); + } + { boost::zip_iterator i1(MAKE_TUPLE(vi.begin(), vs.begin())); boost::zip_iterator i2(MAKE_TUPLE(vi.end(), vs.end())); diff --git a/test/zip_iterator_test2_std_tuple.cpp b/test/zip_iterator_test2_std_tuple.cpp index 60b1b97..95eff87 100644 --- a/test/zip_iterator_test2_std_tuple.cpp +++ b/test/zip_iterator_test2_std_tuple.cpp @@ -1,6 +1,6 @@ #include -#if !defined(BOOST_NO_CXX11_HDR_TUPLE) +#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) #include #include