Boost logo

Boost Users :

From: Raoul Gough (yg-boost-users_at_[hidden])
Date: 2003-07-16 12:02:29


David Abrahams <dave_at_[hidden]> writes:

> Raoul Gough <yg-boost-users_at_[hidden]> writes:
>
>> Using gcc 3.2 (on MinGW) the template parameter defaults for
>> indirect_iterator_generator don't work with shared_ptr. This has been
>> discussed* on the list before, but there doesn't seem to have been a
>> user-friendly resolution to the issues involved (at least not in
>> release 1_30_0).
>
> Right. The user-friendly solution is to use the iterator adaptors in
> the current Boost CVS. There won't be a fix for 1.30.0.

Hi Dave,

Thanks very much for your reply. I've switched to the CVS head, and
can get my test case to compile as follows:

#include <boost/iterator/indirect_iterator.hpp>
#include <boost/shared_ptr.hpp>
#include <list>

int main ()
{
  typedef std::list<boost::shared_ptr<int> > ListType;
  typedef ListType::iterator BaseIterator;
  typedef boost::indirect_iterator<BaseIterator> Adapter;
}

Is that about right? It looks like the main documentation isn't up to
date yet, since it links to libs/utility/indirect_iterator.htm which
still talks about indirect_iterator_generator.

On a different note, /libs/iterator/doc/facade-and-adaptor.html says:

  If the default is used for Value, then there must be a valid
  specialization of iterator_traits for the value type of the base
  iterator.

Is a full iterator_traits actually necessary? Just seems to me that
there is conceptual difference between (let's say)
dereferencable_traits (which any proxy type could have) and a
full-blown iterator_traits (which smart pointers probably wouldn't
have).

-- 
Raoul Gough
"Let there be one measure for wine throughout our kingdom, and one
measure for ale, and one measure for corn" - Magna Carta

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