[Boost-bugs] [Boost C++ Libraries] #10989: strided breaks on impure traversal tags

Subject: [Boost-bugs] [Boost C++ Libraries] #10989: strided breaks on impure traversal tags
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2015-02-02 17:31:03


#10989: strided breaks on impure traversal tags
------------------------------+------------------------
 Reporter: anonymous | Owner: neilgroves
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: range
  Version: Boost 1.57.0 | Severity: Problem
 Keywords: |
------------------------------+------------------------
 From http://stackoverflow.com/questions/28280553/boostadaptorsstrided-
 cannot-be-used-after-boostadaptorstransformed

 [...]/boost/1.57.0/include/boost/range/iterator_range_core.hpp:216:20:
 error: no matching function for call to
 â€˜boost::range_detail::strided_iterator<boost::iterators::transform_iterator<TrivialTrafo,
 __gnu_cxx::__normal_iterator<int*, std::vector<int> >,
 boost::iterators::use_default, boost::iterators::use_default>,
 boost::iterators::detail::iterator_category_with_traversal<std::input_iterator_tag,
 boost::iterators::random_access_traversal_tag>
>::strided_iterator(boost::range_detail::strided_iterator<boost::iterators::transform_iterator<TrivialTrafo,
 __gnu_cxx::__normal_iterator<int*, std::vector<int> >,
 boost::iterators::use_default, boost::iterators::use_default>,
 boost::iterators::random_access_traversal_tag>&)’
          , m_End(End)

 Problem is that make_begin_strided_iterator et al coerce the returned
 iterator traversal category/tag to a pure traversal tag, which doesn't
 necessarily agree with the Category passed to iterator_range for the base
 type. Fix is to use iterators::pure_iterator_traversal.

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/10989>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:17 UTC