Heim > Backend-Entwicklung > C++ > Warum gibt es in C keine std::shared_ptr-Spezialisierung?

Warum gibt es in C keine std::shared_ptr-Spezialisierung?

DDD
Freigeben: 2024-11-10 06:48:03
Original
992 Leute haben es durchsucht

Why Isn't There a std::shared_ptr Specialization in C  ?

std::shared_ptr Spezialisierung

Die C-Standardbibliothek enthält eine Spezialisierung von std::unique_ptr für Arrays, die delete[] korrekt aus ihrem Destruktor aufruft. Allerdings fehlt eine ähnliche Spezialisierung insbesondere für std::shared_ptr. Dieses Verhalten erfordert, dass Benutzer manuell einen Löscher bereitstellen, der explizit delete[] aufruft.

Ist diese Auslassung ein Versehen oder Absicht?

Grund für die Abwesenheit

Die C Library Working Group (LWG) hat die Möglichkeit eines std::shared_ptr Spezialisierung, aber Kontroversen um zusätzliche Funktionen verhinderten ihre Aufnahme.

Insbesondere arithmetische Operationen auf std::shared_ptr wurden vorgeschlagen, stießen aber auf Widerstand. Letztendlich führte das Fehlen eines offiziellen Vorschlags und einer Priorisierung dazu, dass die Funktion aus dem Standard ausgeschlossen wurde.

Neueste Entwicklungen

Informell hat das Thema innerhalb der wieder an Bedeutung gewonnen LWG und ein Prototyp wurde entwickelt. Obwohl das Potenzial besteht, dass diese Funktion zu einem wertvollen Werkzeug wird, bleibt ihre Aufnahme in den Standard ungewiss.

Aktueller Status

Ab C 11 ist ein std:: shared_ptr Die Spezialisierung ist nicht standardisiert. Es gibt jedoch einen laufenden TS-Vorschlagsentwurf (N4077), der Array-Unterstützung für std::shared_ptr einführt.

Update (2017)

Der C 17-Standard beinhaltet Unterstützung für Arrays in std::shared_ptr (Fall 3 von shared_ptr::shared_ptr()).

Das obige ist der detaillierte Inhalt vonWarum gibt es in C keine std::shared_ptr-Spezialisierung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage