id summary reporter owner description type status milestone component version severity resolution keywords cc 1842 boost::sub_rage::front error ka3a4ok Thorsten Ottosen "I think, there is an error in ''sub_range::front const'' method. It use ''const value_type&'' instead of ''const reference''. For example, here is a well compiled code, that fails on last assert, but should not: {{{ #include #include #include #include #include //------------------------------------------------------------------------------ struct Trans: public std::unary_function { int operator()(const int& a)const { return a*2; } }; //------------------------------------------------------------------------------ int main(int argc, char* argv[]) { using namespace boost::assign; const std::list a=list_of(10); const std::list b=list_of(20); BOOST_ASSERT(!a.empty() && !b.empty()); BOOST_ASSERT(a.front()!=b.front()); BOOST_ASSERT(Trans()(a.front())!=Trans()(b.front())); typedef boost::transform_iterator::const_iterator> my_iter_t; typedef std::pair < my_iter_t, my_iter_t > my_pair_t; const boost::sub_range ar ( boost::make_transform_iterator(boost::const_begin(a), Trans()), boost::make_transform_iterator(boost::const_end(a), Trans()) ); const boost::sub_range br ( boost::make_transform_iterator(boost::const_begin(b), Trans()), boost::make_transform_iterator(boost::const_end(b), Trans()) ); BOOST_ASSERT(ar.front()!=br.front()); // <---- fail return 0; } }}} " Bugs closed Boost 1.36.0 range Boost 1.35.0 Problem fixed sub_range front back reference