Boost logo

Boost :

Subject: [boost] [gil] how does dereference_iterator_adaptor defines it's iterator category?
From: Christian Henning (chhenning_at_[hidden])
Date: 2010-06-01 04:01:46

Hi all,

I'm still investigating compilation errors with my gil extension while
compiling on MSVC10. I have exchanged
boost::random_access_traversal_tag with
std::random_access_iterator_tag with all gil iterator types. This
solved some of my problems. Some still remain. Here is what I have

When using a boost::gil::kth_channel_view_type with bit_aligned image
types I'm running into the same problem I had with just using
bit_aligned image types. Now kth_channel_view_type uses a
boost::gil::dereference_iterator_adaptor for iteration purposes. This
adaptor defines it's iterator category as
which is wrong. I have been trying to figure out where this definition
is coming from. But I'm not able to. All occurrences of
random_access_traversal_tag have been removed from gil code. Which
leads me to believe it's coming from boost itself somewhere.

Here is some code displaying the problem.

#include <vector>
#include <algorithm>

#include <boost/gil/gil_all.hpp>

using namespace std;
using namespace boost;
using namespace boost::gil;

int main(int argc, char* argv[])
    typedef bit_aligned_image1_type< 1, gray_layout_t >::type image_t;

    typedef image_t::view_t view_t;
    typedef view_t::x_iterator view_it_t;
    typedef view_it_t::iterator_category view_cat_t;

    // it's std::random_access_iterator_tag
    view_cat_t view_cat;

    typedef kth_channel_view_type< 0, view_t >::type plane_t;
    typedef plane_t::x_iterator plane_it_t;
    typedef plane_it_t::iterator_category plane_cat_t;

    // it's boost::detail::iterator_category_with_traversal<std::input_iterator_tag,boost::random_access_traversal_tag>
    plane_cat_t plane_cat;

    return 0;


Boost list run by bdawes at, gregod at, cpdaniel at, john at