
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.
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? -- Eric Niebler Boost Consulting www.boost-consulting.com