"Eric Niebler" wrote in message
news:422CEAE9.3020708@boost-consulting.com...
| Thorsten Ottosen wrote:
| > My suggestion have been to allow
| >
| > boost::some_range_fun(r);
| >
| > to support ADL via the requirement that users implement
| >
| > adl_some_range_fun(r);
| >
| > Can you confirm that this would remove the present problems with gcc?
| >
| > If so, I will propose this on the developer list and make it part of 1.33
| >
|
|
| I admit I've only skimmed the ongoing discussion, but something like
| what you are suggesting here should work, I think. How about this:
|
| namespace boost {
|
| namespace range_detail_ {
|
| template<typename T>
| typename range_iterator<T>::type boost_range_begin(T& t) {
| // ...
| }
|
| template<typename T>
| typename range_iterator<T>::type begin(T& t) {
| // this uses ADL
| return boost_range_begin(t)
| }
|
| } // namespace range_detail_
|
| using range_detail_::begin;
|
| }
how this is exactly implemented in boost.range is of minor concern
to me; I'm after the protocol.
|
| Recommended practice would be to always use qualified calls to
| boost::begin,
yes.
| and then let users define overloads of boost_range_begin
| in their own namespace and let ADL find it.
yes, except I was suggesting to call it adl_begin().
| Does that satisfy everybody's concerns? (Probably not, but it couldn't
| hurt to ask, right?)
no, it couldn't hurt.
-Thorsten