ptr含糊不清? (stl vs boost)
可能重复:
为什么'使用名称空间标准;' 在C ++中被认为是不好的做法?
我在我的代码中使用了stl
的shared_ptr
很多地方,并且我使用了以下using
shared_ptr
using
语句:
using namespace std::tr1;
现在我需要使用boost::bimap
。 所以我必须在我的代码中包含以下头文件:
#include <boost/bimap.hpp>
只要我包含bimap
头文件, shared_ptr
类型变得模糊不清,我必须将shared_ptr
所有用法更改为std::tr1::shared_ptr
。 由于这会让我的代码变得丑陋,所以我正在寻找一种方法来避免这种不明确性,而无需使用完全限定的名称在任何地方声明shared_ptr
。 我正在考虑为std::tr1::shared_ptr
使用typedef
,但也许有更好的方法。 任何意见,将不胜感激!
根本不要介绍它。 避免一般using namespace ...
以下内容如何:
using shared_ptr = std::tr1::shared_ptr;
但是,正确的答案实际上是不使用using namespace ...
语句,或仅使用它来创建命名空间别名。
顺便说一下,自从C ++ 11在去年成为标准化以来,你知道std::tr1
是obselete吗?