$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-08-28 09:17:00
From: "Richard Wolf" <richard_at_[hidden]>
> Hi
>
> I'm trying to use make_indirect_iterator on a container of shared_ptrs as
> follows:
>
[...]
> int main()
> {
> list<shared_ptr<A> > List2;
>
> // This doesn't work
> for_each(make_indirect_iterator(List2.begin()),
> make_indirect_iterator(List2.end()),
> mem_fun_ref(&A::f));
> }
The reason is that make_indirect_iterator tries to instantiate
std::iterator_traits< shared_ptr<A> >, and this fails, because shared_ptr<A>
is not an iterator.
You can make the for_each work by using
for_each(List2.begin(), List2.end(), boost::mem_fn(&A::f)); // in
<boost/mem_fn.hpp>
if that's what you want.