c'est ça , pour auto_ptr il y a un "release" de fait sur la source lors de la copie.
Version imprimable
ok oui je pensais qu'une conversion implicite pouvait passer entre short et int. Si on définit deux classes X et Y avec un operateur de transtypage entre les deux types ça peut passer ? ( j'ai essayé mais sans succes , peut-être une erreur de syntaxe...), je pose ça par curiosité j'ai conscience que je n'aurais jamais à utiliser ça :D
Pour répondre à la question initiale, je trouve que shared_ptr est très adapté dans la plupart des cas. Il a un comportement attendu et très sain, il n'y a pas de pièges.
scoped_ptr n'est pas copiable, auto_ptr transfère la responsabilité. Il fait faire attention avec ces bêtes là ! ;)
Personnellement, je n'utilise que shared_ptr (parfois en combinaison avec weak_ptr), même si une implémentation par comptage de référence n'est pas ce que j'attend dans 100% des cas. En cas d'évolution de cahier des charges, il se peut qu'on doive partager une ressource.
Au passage, les pointeurs sous Python fonctionne avec un compteur (comme shared_ptr), c'est vraiment une solution "passe-partout" pour un surcout minime.