我有一个大量使用shared_ptr
和 STL 的 c++ 代码。一个常见的标题说
#include<boost/shared_ptr.hpp>
using boost::shared_ptr; // for shared_ptr
using namespace std; // for STL
我现在想切换到 c++0x 以利用语言特性,使用 gcc 4.6 和-std=c++0x
. 然而std::shared_ptr
,现在也有,导致未指定shared_ptr
(boost::shared_ptr
vs std::shared_ptr
)的歧义。
改为std::shared_ptr
改为时,如下所示:
#include<memory>
using namespace std; // for STL; also imports std::shared_ptr
然后我遇到了问题boost::python
,它boost::shared_ptr
仅适用于(至少无需进一步摆弄):
/usr/include/boost/python/object/make_ptr_instance.hpp:30:52: error: no matching function for call to 'get_pointer(const std::shared_ptr<Cell>&)'
因此,我的问题是
- 如果有一个简单的解决方案来解决和之间的歧义
boost::shared_ptr
(std::shared_ptr
除了现在不使用 c++0x),还有 - if
boost::shared_ptr
最终将只是std::shared_ptr
;的别名 这将自动解决我的问题。
谢谢!