
"Thorsten Ottosen" <nesotto@cs.auc.dk> wrote
"Arkadiy Vertleyb" <vertleyb@hotmail.com> wrote in message ... | Well, then I hate to say this, but IMHO this is a problem in the Boost.Range | design :-(
It is deliberate design. All generic code that uses boost.range should use unqualified calls to enable ADL. ... | 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 :-(
I don't get this. Surely one of the functions would be a better match than the others and hence called.
How is namespace MyNamespace { template<class T> end(const T&); } is better match than namespace YourNamespace { template<class T> end(const T&); } ? And now: MyNamespace::Foo<YourNamespace::Bar> obj; end(obj); // ????? Regards, Arkadiy