
"David Abrahams" <dave@boost-consulting.com> wrote in message news:usm2379fu.fsf@boost-consulting.com... | "Thorsten Ottosen" <nesotto@cs.auc.dk> writes: | | > "David Abrahams" <dave@boost-consulting.com> wrote in message | > news:u1x9nzw3b.fsf@boost-consulting.com... | > | "Thorsten Ottosen" <nesotto@cs.auc.dk> writes: | > just consider that all of the begin()'s may have an unconstrained | > primary template version. all three is going to match. | | How likely is that? It doesn't seem bery likely to me. foo::begin | will almost certainly be more specific. who knows. | I don't think you mean "primary template," do you? You're not talking | about using function template specialization are you? I just meant they all have a default version (the primary template) like template <class T > some_thing begin( T& r ); | > | > begin() is a bad customization point | > | | > | I'm not sure of that anymore. Conflicts caused by GCC can be | > | misleading. And now that we know how to properly isolate types | > | > you mean by namespaces? | | Yes. then consider a TU where somebody writes using namespace boost; using namespace std; using namespace foo; | > | to prevent unintended ADL, I think it's even less of a problem. | > | > IMO there is no such thing as unintended ADL during a call to | > boost::begin(). you always want it. | | By "unintended ADL" I mean what happens when the author of the begin() | function that ends up getting called never intended it to be found via | ADL for that particular argument type. I suppose I should have | written "unintended argument-dependent matching" or something. hm...I simply can't imagine somebody wanting that ADL should not kick in. If only the language had built-in capabilities for to enable both ADL and qualified syntax... -Thorsten