• [^] # Re: templates variadiques

    Posté par . En réponse à la dépêche Le standard C++0x a enfin été voté. Évalué à 1.

    Un smart pointer est un objet qui encapsule un pointeur, il y a donc bien une allocation de l'objet qui encapsule. Tu peux mettre ce que tu veux comme pointeur dedans, qu'il soit valide ou invalide ne change rien au fais qu'il y a bien allocation d'une coquille pour stocker le pointeur et son compteur de références.

    La derniere fois que j'ai regardé l'implementation de boost::shared_ptr, j'y ai vu... qu'il n'y a pas de telle coquille. Le shared_ptr possède deux membres, un pointeur vers le compteur de référence, et un pointeur vers l'objet partagé (oui, les deux ne sont pas co-localisés, c'est un design possible, il y avait un papier sur les performances qui trainait sur le site, bref...)

    Et avec ce modèle, on n'est pas obligé d'allouer le compteur dans le constructeur par défaut, parce que cela ne sert a rien.