
"Eric Niebler" <eric@boost-consulting.com> wrote
Jonathan Turkanis wrote:
Arkadiy Vertleyb wrote:
In this particular case the Boost.Range needs to be fixed to avoid unqualified calls, IMO.
I believe Thorsten deliberately wanted to allow unqualified calls.
Yes, Boost.Range is designed that way. It is an extensible design -- you can range-ify your own type by defining your own begin() and end() and letting ADL find them. So it seems there is no simple work-around for GCC's bizarre ADL rules in this case. We'll need to think of something else.
Well, then I hate to say this, but IMHO this is a problem in the Boost.Range design :-( I am not really that familiar with this library, but I assume it has to do with containers, correct? Assume the following usage (pseudocode) Range(std::vector<MyNamespace::SomeTemplate<boost::multi-index<boost::mpl::v ector> > > ) Now ADL will use std, boost, MyNamespace, boost::multi_index, and boost::mpl to find Range. There is absolutely no guarantee that it won't find conflicting functions :-( Regards, Arkadiy