c ++ 0x std :: shared_ptr vs. boost :: shared_ptr

У меня есть код на 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 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 ; это решит мою проблему автоматически.

Спасибо!

8
задан Trevor Boyd Smith 12 June 2018 в 13:31
поделиться