Dann gehört Referenzzählung nicht zu Garbage Collection/automatischer Speicherverwaltung und dieser Artikel hier ist wohl auch Falsch?
Shared_ptr ist ein äußerst selten tatsächlich brauchbarer Anwendungsfall (mir ist bis jetzt kein Fall begegnet, wo geteilte Ownership tatsächlich vorlag). Damit reduzieren sich Smart-Pointer in C++ effektiv auf den unique_ptr. Dieser macht kein Reference Counting und auch keine Garbage-Collection, die sich effektiv vom Verhalten regulärer Stack-Objekte in Hinsicht auf den Lebenszyklus unterscheidet. Er dient zur automatischen Speicherverwaltung, sicher. Aber nicht zu Garbage Collection. Zudem ist er auch semantisch etwas ganz anderes als Java mit seinen Referenzen und GC jemals ausdrücken könnte. Ownership ist in Java gar kein Konzept. Da dieses Konzept in C++ aber eindeutig stärker betont wurde, geht es also keineswegs in diese Richtung.
Smart-Pointer in C++ dienen vor allem auch Exception-sicherem Verhalten was die Freigabe von Ressourcen in heiklen Situationen angeht. Diese Situationen waren vorher gar nicht abgedeckt und stellten ein Problem dar. Sie machen das Leben jedes Entwicklers natürlich trotzdem ungemein einfacher.