Thomas Matelich
On Tue, 01 Mar 2005 12:55:21 -0500, David Abrahams
wrote: Thomas Matelich
writes: I'm a little behind the times and am trying to port my old iterator_adapters code to use the new library (1.32). We have a class which is little more than a wrapper around a vector
, and I am having a heck of a time with setting its typedef for reverse_iterator and const_reverse_iterator. I just can't get const_reverse_iterator to do assignment and comparison with reverse_iterator. I've tried to make indirect_iterators out of the native reverse iterators,
That almost certainly won't work, because the native reverse_iterator usually won't play nicely with the native const_reverse_iterator.
using boost::reverse_iterators of indirect_iterators
What happens when you do that? (code, error messages) Have you verified that the const and mutable indirect_iterators interoperate the way you'd like?
So, of course, my sample application (attached) compiles just fine.
No it doesn't:
vc-C++ c:\build\bin\tmp\foo.test\vc7.1\debug-python\threading-multi\foo.obj
foo.cpp
foo.cpp(255) : error C2662: 'TestItem::setItemKey' : cannot convert 'this' pointer from 'const boost::detail::add_pointer_impl<T>::no_ref_type' to 'TestItem &'
with
[
T=const boost::detail::iterator_facade_types
c_r_iter->setItemKey(33,33); //does compile for new
Then it does compile just fine. Clearly you are doing something significantly different in your sample application.
In my failing version assigning a rev_iterator to a const_rev_iterator fails with the following error:
smartlisttest.cpp(352) : error C2440: 'initializing' : cannot convert from 'ZUtil::SmartList<T>::rev_iterator' to 'boost::reverse_iterator<Iterator>' with [ T=TestItem ] and [ Iterator=ZUtil::SmartList<TestItem>::const_iterator ] No constructor could take the source type, or constructor overload resolution was ambiguous
Well, it seems as though
ZUtil::SmartList<TestItem>::rev_iterator
and
boost::reverse_iterator