我有一個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