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