我有一个C++代码,它严重使用shared_ptr
和STL。一个常见的头说C++ 0x std :: shared_ptr与boost :: shared_ptr
#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
apprently仅适用(至少没有进一步摆弄):
/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>&)'
我因此问题是
- 如果其他e是解决
boost::shared_ptr
和std::shared_ptr
(除非现在不使用C++ 0x)之间的模糊性的简单解决方案,并且还有 - 如果
boost::shared_ptr
最终将只是std::shared_ptr
的别名;这将自动解决我的问题。
谢谢!
PS。使用提升1.42。 – eudoxos
该解决方案可能会摆脱'一起使用名称空间std'。它可以像为每个stl元素进行全局查找和替换一样简单。 – stijn
没错,那将是解决方案,但STL的使用频率很高,会使代码更不易读;也许我可以考虑写一堆'使用std :: string;使用std :: vector;共同标题中的等等声明。它实际上并不是很多使用的'std ::'部件,但它们经常使用。 – eudoxos