|
Boost : |
From: David Abrahams (abrahams_at_[hidden])
Date: 1999-12-18 14:03:02
Ed Brey wrote:
> Furthermore, we should discourage "using namespace boost"
> in the first place, since it can unforeseen conflicts as names are added to
> boost.
Hey, good. Somebody finally came out and said it: using-directives in
general are just plain dangerous and unpredictable. Let's not make any
decisions which are based on a desire to accomodate them.
Now, here's a question worth answering: would it work to add to
namespace boost explicit using-declarations of all names in boost::cast?
I tried it with gcc and it worked, but of course GCC lets you get away
with relying on the using-directive, which doesn't work. (I'm booted
into Linux right now, so I'm away from my other compiler). It looks like
Comeau also lets the using-directive work. Metrowerks is one compiler I
know of that handles this right.
-Dave
-----
namespace foo {
template<class X, class Y>
X foo_cast(Y y) { return X(y); }
}
using namespace foo;
namespace bar {
template <class X, class Y>
X bar_cast(Y y) { return X(y); }
}
using bar::bar_cast;
}
namespace mine
{
void f()
{
long x = boost::bar_cast<long>(1); // should work(?)
long y = boost::foo_cast<long>(2); // should fail!
}
}
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk