如何避免shared_ptr歧义? (stl vs boost)

时间:2012-12-09 12:46:19

标签: c++ ambiguity

  

可能重复:
  Why is ‘using namespace std;’ considered a bad practice in C++?

我在我的代码中使用了stl的{​​{1}}个很多地方,并且我在shared_ptr使用过的任何地方都使用了以下using语句:

shared_ptr

现在我需要使用using namespace std::tr1; 。所以我必须在我的代码中包含以下头文件:

boost::bimap

只要我添加#include <boost/bimap.hpp> 标头文件,bimap类型就会变得模棱两可,我必须将shared_ptr的所有用法更改为shared_ptr。由于这会使我的代码变得丑陋,我正在寻找一种避免这种歧义的方法,而无需在任何地方用完全限定的名称声明std::tr1::shared_ptr。我在考虑将shared_ptr用于typedef,但也许有更好的方法。任何建议将不胜感激!

2 个答案:

答案 0 :(得分:6)

根本就不介绍它。避免使用using namespace ...

答案 1 :(得分:5)

以下内容如何:

using shared_ptr = std::tr1::shared_ptr;

但是,正确的答案实际上是不使用using namespace ...语句,或仅使用它来创建名称空间别名。

顺便说一下,你知道自从C ++ 11去年成为标准化以来,std::tr1已经过时了吗?