|
Boost Users : |
From: Thomas Matelich (matelich_at_[hidden])
Date: 2005-03-08 10:59:25
Thanks for the tips on tracking it down. For the time being, I'm just
changing implicit conversions of rev_iterator to const_rev_iterator.
It's not that important a feature for the amount of time I've been
spending on it.
On Mon, 07 Mar 2005 21:05:52 -0500, David Abrahams
<dave_at_[hidden]> wrote:
> Thomas Matelich <matelich_at_[hidden]> writes:
>
> > On Tue, 01 Mar 2005 12:55:21 -0500, David Abrahams
> > <dave_at_[hidden]> wrote:
> >> Thomas Matelich <matelich_at_[hidden]> 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<shared_ptr<T> >,
> >> > 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<boost::mpl::identity<boost::detail::smart_ptr_pointee<boost::detail::indirect_base<ZUtil::SmartList<TestItem>::native_iterator,boost::use_default,boost::use_default,boost::use_default,boost::use_default>::dereferenceable>::type>::type,boost::mpl::identity<boost::random_access_traversal_tag>::type,boost::mpl::identity<boost::detail::smart_ptr_reference<boost::detail::indirect_base<ZUtil::SmartList<TestItem>::native_iterator,boost::use_default,boost::use_default,boost::use_default,boost::use_default>::dereferenceable>::type >::type ,boost::iterator_difference<ZUtil::SmartList<TestItem>::native_iterator>::type>::value_type
> ]
> Conversion loses qualifiers
>
> But of course, you should have commented out the line that says:
>
> > 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<ZUtil::SmartList<TestItem>::const_iterator>
>
> must not be the same type in your failing version. If the problem
> isn't immediately obvious, I suggest you run your code through the VC8
> public beta. Jason Shirk, at my urging, implemented a fix to the
> error reporting that will unwind the typedefs in the error message so
> you can see what types are actually involved.
>
>
> --
> Dave Abrahams
> Boost Consulting
> www.boost-consulting.com
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net