$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-users] boost::transform_iterator, boost::array::iterator and category
From: Hicham Mouline (hicham_at_[hidden])
Date: 2009-04-03 07:42:28
Hello,
I have boost::array< pair<double, double>, 16 >::iterator (it has
iterator_traits<>::iterator_category 
random_access_iterator_tag)
which I have transformed with
typedef transform_iterator< UnaryFunction, ... >   iteratorIntoFirst;
struct UnaryFunction: public std::unary_function< pair<double, double>,
double> {
    double operator()( const pair<double, double>& e ) const
    {
      return e.first;
    }
  }
However on asserting the category is still random access, boost static
assert fails:
  BOOST_STATIC_ASSERT((
    boost::is_convertible<
      iteratorIntoFirst,
      std::random_access_iterator_tag
    >::value
  ));
>From the docs
http://www.boost.org/doc/libs/1_38_0/libs/iterator/doc/transform_iterator.ht
ml
If Iterator models Readable Lvalue Iterator and if Iterator models "Random
Access Traversal Iterator", then iterator_category is convertible to
random_access_iterator_tag.
Any ideas,
Regards,