
"Thorsten Ottosen" <nesotto@cs.auc.dk> writes:
"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.
Well, we're doing this design completely based on speculation, so you have to make some educated guesses in order to proceed.
| 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 );
That's a misuse of the term "primary template," which has a specific technical meaning. Why not just say "fully general overload?"
| > | > 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;
What about it? ADL doesn't look through using-directives. Furthermore, using-directives are (almost officially) discouraged except for migrating old code.
| > | 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.
I don't see how you can say that and also worry about the "ADL lookup problem." It has to be one or the other.
If only the language had built-in capabilities for to enable both ADL and qualified syntax...
What would the point of qualification be if the actual function found might be in some other namespace? -- Dave Abrahams Boost Consulting www.boost-consulting.com