Inwiefern spielt der overhead beim Allozieren des reference counters für euch eine Rolle? Solange ihr nicht in einer kritischen Schleife die Objekte immer wieder erzeugt, ist dieser zusätzliche overhead vernachlässigbar, da mit ihm nur bei der Objekterzeugung zu rechnen ist. Intrusive reference counting aus dem Grund zu wählen, weil es den overhead beim Allozieren des reference counters vermeidet ist fragwürdig, ich hoffe das ist nur deine Interpretation. Intrusive reference counting ist praktisch etwa wenn reference counting über Programm/Bibliothek-Grenzen hinweg funktionieren soll, oder wenn die Objekte in memory pools alloziert werden.
Ich kann mir Situationen vorstellen, in denen raw pointer nicht reichen würden.
----------------------
Übrigens fällt mir gerade ein Problem bei deiner Struktur weiter oben ein. Dein Argument war, dass du null zurückgeben kannst, wenn ein Objekt gelöscht wurde. Dem entnehme ich, dass bei dir Situationen eintreten können, in denen Objekte referenziert werden, die bereits gelöscht wurden. Was nun, wenn ein Objekt gelöscht wird und die Stelle im Vektor durch ein neues ersetzt wird, noch bevor der Code, der das gelöschte Objekt referenziert, realisiert, dass das referenzierte Objekt nicht mehr existiert?