boost::intrusive_ptr
wymaga zdefiniowania intrusive_ptr_add_ref
i intrusive_ptr_release
. Dlaczego nie jest podana klasa podstawowa, która to zrobi? Oto przykład: http://lists.boost.org/Archives/boost/2004/06/66957.php, ale na plakacie jest napisane: "Niekoniecznie uważam, że to dobry pomysł". Dlaczego nie?intrusive_ptr: Dlaczego nie jest udostępniana wspólna klasa podstawowa?
Aktualizacja: Nie sądzę, aby fakt, że ta klasa mogła zostać niewłaściwie wykorzystana z wieloma dziedziczeniami, jest wystarczającym powodem. Każda klasa wywodząca się z wielu klas bazowych z własną liczbą odwołań będzie miała ten sam problem. To, czy te wartości reflokowe są realizowane za pośrednictwem klasy bazowej, czy nie, nie ma znaczenia.
Nie sądzę, że jest jakiś problem z wielowątkowością; boost::shared_ptr
oferuje liczenie odniesień atomowych i ta klasa może również.
Na powiązana uwaga 'OSG :: ref_ptr' z biblioteki OpenSceneGraph używa najwyższego poziomu klasy bazowej (wspólny 'osg :: Referenced') za inwazyjną implementację inteligentnego wskaźnika. –
Osg :: Referenced jest kompatybilny z boost :: intrusive_ptr, ponieważ zapewnia funkcje intrusive_ptr_add_ref() i intrusive_ptr_release(). Działa świetnie. –