
on Wed Mar 04 2009, bismuth-AT-list.ru wrote:
There is probably a bug in boost::iterators library. boost::transform_iteartor degrade stl iterator_category. There is a code below, illustrating a problem(using VS2008 c++ compiler):
I just answered the trac ticket. It's not a bug. ForwardIterator (and thus Bidirectional and RandomAccessIterator) require their operator* to return a true reference to the value_type.
--------------------- #include
#include #include <vector> #include
#include struct Tr1: std::unary_function
{ unsigned operator()(unsigned a)const { return a; } }; int _tmain(int argc, _TCHAR* argv[]) { typedef std::vector<unsigned>::iterator some_ra_iterator_t; typedef boost::transform_iterator
tr_iter_t; BOOST_STATIC_ASSERT (( boost::is_convertible < std::iterator_traits
::iterator_category, std::random_access_iterator_tag >::value )); BOOST_STATIC_ASSERT (( ! boost::is_convertible < std::iterator_traits
::iterator_category, std::random_access_iterator_tag >::value )); BOOST_STATIC_ASSERT (( boost::is_same < std::iterator_traits
::iterator_category, boost::detail::iterator_category_with_traversal < std::input_iterator_tag, //?! boost::random_access_traversal_tag > >::value )); return 0; } ---------------------
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
-- Dave Abrahams BoostPro Computing http://www.boostpro.com