$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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?
>
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.
http://www.boost.org/libs/range/doc/boost_range.html#Semantics
It seems that the documentation realy needs some improvements, since it has
also confused myself.
Regards,
Pavol