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?

链接地址: http://www.djcxy.com/p/29784.html

上一篇: 使用命名空间std vs其他选择

下一篇: ptr含糊不清? (stl vs boost)