У меня есть код C ++, который интенсивно использует shared_ptr
и STL. Общий заголовок гласит
#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
против 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 на данный момент), а также
- если
boost::shared_ptr
в конечном итоге будет просто псевдонимом для std::shared_ptr
; это решило бы мою проблему автоматически.
Спасибо!