ptr ambiguity? (stl vs boost)
Possible Duplicate:
Why is 'using namespace std;' considered a bad practice in C++?
I've used stl
's shared_ptr
many places in my code and I have used the following using
statement anywhere that I have used shared_ptr
:
using namespace std::tr1;
Now I need to use boost::bimap
. So I have to include the following header file in my code:
#include <boost/bimap.hpp>
As soon as I include the bimap
header file, the shared_ptr
type becomes ambiguous, and I have to change all usages of shared_ptr
to std::tr1::shared_ptr
. Since this makes my code ugly, I am looking for a way to avoid this ambiguity without needing to declare shared_ptr
everywhere with a fully qualified name. I was thinking of using typedef
for std::tr1::shared_ptr
, but maybe there are better ways too. Any advice would be appreciated!
simply do not introduce it. avoid the general using namespace ...
How about the following:
using shared_ptr = std::tr1::shared_ptr;
However, the correct answer would actual be to not use the using namespace ...
statement, or only use it to create namespace aliases.
By the way, you know that std::tr1
is obselete since C++11 became standardised last year?
上一篇: 使用命名空间std vs其他选择