2010-09-30 24 views

Répondre

20

Non, la documentation de shared_ptr boost dit:

Cette implémentation est conforme à la spécification TR1 , avec la seule exception qu'il se trouve dans l'espace de noms boost au lieu de std :: tr1.

+8

Ah. Donc, il y a une différence. – gregg

+3

Les implémentations peuvent différer tout en restant conformes; Notamment les opérateurs de déréférencement de 'boost :: shared_ptr' utilisent 'Boost.Assert' pour vérifier la valeur NULL (c'est-à-dire vide) avant d'effectuer le déréférencement; alors que 'stc :: shared_ptr' de' libC++ '' n'a pas cette vérification. Dans le cas où vous rencontrez cette erreur lors de l'exécution, l'un signifiera un échec d'assertion, l'autre une faute de segmentation (probablement). – rvalue