$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