Boost logo

Boost :

From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2005-04-07 07:50:55

"David Abrahams" <dave_at_[hidden]> wrote in message
| "Thorsten Ottosen" <nesotto_at_[hidden]> writes:
| > "David Abrahams" <dave_at_[hidden]> wrote in message
| >
| > | "Thorsten Ottosen" <nesotto_at_[hidden]> 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)

    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...


Boost list run by bdawes at, gregod at, cpdaniel at, john at