On Tue, 01 Mar 2005 12:55:21 -0500, David Abrahams
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. I went through and made sure I'm using the same compile options in my sample project and real project (MSVC 7.1). 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 Does that error ring a bell? I'm about ready to drop the new iterators or rewrite this class, neither of which I really want to do at this point. Thanks, Tom