How to avoid shared_ptr ambiguity? (stl vs boost)
ambiguity, c++
Solution
simply do not introduce it. avoid the general `using namespace ...`
Problem
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!