2011-02-04 18 views
25

Me preguntaba si hay diferencias entre el boost::shared_ptr y el std::shared_ptr que se encuentran en el archivo estándar <memory>.Diferencia entre boost :: shared_ptr y std :: shared_ptr del archivo estándar <memory>

+0

Esto dependería de su implementación. – robert

+0

@robert ¿Se pueden usar indistintamente? Estoy intentando implementar esto http://stackoverflow.com/questions/3559412/how-to-store-different-data-types-in-one-list-c/3560884#3560884 – Pepe

+1

@ P.R. - 'std :: shared_ptr' es la forma C++ 0x de' tr1 :: shared_ptr', y 'shared_ptr' de boost debe comportarse igual: http://stackoverflow.com/questions/3831572/differences-between-tr1shared- ptr-and-boostshared-ptr – birryree

Respuesta

19

std::shared_ptr es la forma C++ 0x de tr1::shared_ptr, y boost::shared_ptr de boost debería comportarse de la misma.

Sin embargo, std::shared_ptr, en una implementación que se ajusta a C++ 0x norma, debería/podría tener un comportamiento más comodidad en la clase shared_ptr, como se describe en los siguientes enlaces:

El shared_ptr es un puntero contado de referencia que actúa tanto como sea posible como un puntero de datos C++ normal. La implementación de TR1 carecía de ciertas funciones de puntero, como aliasing y aritmética de puntero, pero la versión de C++ 0x las agregará.

A pesar de un rápido vistazo rápido, no veo operator+ y similares operaciones aritméticas sobre el tipo shared_ptr.

Cuestiones relacionadas