2015-05-09 14 views
5

Sto usando boost::scoped_ptr nel codice che vorrei sostituire con std::unique_ptr. Vorrei sapere se ci sono degli svantaggi nel passaggio a std::unique_ptr. Boost è portatile su piattaforme e compilatori. Ma non sono sicuro che C++ 11 sia supportato da tutti i compilatori come MSVC. So che GCC e Clang supportano C++ 11 abbastanza bene.Modifica boost :: scope_ptr a std :: unique_ptr

Ho già letto la domanda SO "intrusive_ptr in C++11" la cui risposta breve è "No". Quindi, se qualcuno avesse esperienza nell'utilizzo di entrambi, si prega di condividere i vostri commenti e pensieri

+0

'std :: unique_ptr' è specificato dallo standard, quindi qualsiasi implementazione conforme lo supporta meglio. Ma non sono sicuro di cosa esattamente chiedi. La domanda che hai collegato specificamente voleva la semantica di Boost. La tua domanda sembra essere qualcosa di diverso ma non sono sicuro di cosa sia. – 5gon12eder

+0

vs2010 e avanti hanno un'implementazione di 'std :: unique_ptr' – Mgetz

risposta

9

Mgetz ha generosamente fornito le informazioni che tutte le recenti implementazioni VS forniscono unique_ptr.

Si consiglia di sostituire boost::scoped_ptr<T> con const std::unique_ptr<T>. Il motivo per il const è che questo è il più vicino modello boost::scoped_ptr<T> che non è "mobile". Tuttavia, credo che lo boost::scoped_ptr<T> supporti lo scambio. Quindi, se lo stai usando, il compilatore si lamenterà ovunque tu provi a scambiare uno const std::unique_ptr<T> e potrai quindi contrassegnarlo come non-const.

+0

Grazie Howard. Questa risposta è utile – rkm

+1

C'è qualche problema di perfomance o una prestazione migliore quando si utilizza std :: unique_ptr – rkm

+2

Non credo che vedrete differenze di prestazioni. –

Problemi correlati