From: Pavol Droba (droba_at_[hidden])
Date: 2005-09-01 12:01:46
On Thu, Sep 01, 2005 at 06:09:00AM -0700, Eric Niebler wrote:
> Pavol Droba wrote:
> > It might a problem with documentation, but it seems that you have misunderstood
> > the basic idea of the Range library.
> There is a section in the documentation entitled "Extending the Library"
> that doesn't describe how to extend the library. I'd say that's a pretty
> serious problem in the documentation.
> > Core of the range library is not in the code, rather in concepts that are defined
> > there.
> > http://boost.org/libs/range/doc/range.html
> In that case, the Range library and the concepts it defines are
> fundamentally broken. It seems to be requiring that everybody at all
> times make qualified calls to boost::begin() and boost::end().
> Therefore, in order to extend the library, users must put *their*
> begin() and end() functions in the boost namespace. This is distasteful,
> but I'll let that slide.
> The more serious problem is the way this interacts with 2-phase lookup.
> Since it is a qualified call, any call to boost::begin() from within a
> template will get resolved during the first lookup phase. If a user's
> overload has not been seen yet, it will not get considered.
> So, is Boost.Range broken, or is this another problem with the
Documentation says, that boost::begin() implementation calls unqualified boost_range_begin().
Therefore this is the function, one needs to implement to make support for his/her class.
It seems that the documentation realy needs some improvements, since it has
also confused myself.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk