我有一个大量使用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_ptrvs 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;的别名 这将自动解决我的问题。
谢谢!