Heim > Backend-Entwicklung > C++ > Hauptteil

Warum hat „std::shared_ptr' keine Spezialisierung für Array-Typen?

Linda Hamilton
Freigeben: 2024-11-10 02:47:02
Original
358 Leute haben es durchsucht

Why Doesn't `std::shared_ptr` Have a Specialization for Array Types?

Spezialisierung von std::shared_ptr: An Enigma

Die C-Standardbibliothek enthält eine spezielle Vorlage für std: :unique_ptr, der delete[] in seinem Destruktor entsprechend aufruft. Eine ähnliche Spezialisierung fehlt jedoch für std::shared_ptr, was die Verwendung eines benutzerdefinierten Löschers erfordert, um die Zuordnung von Arrays korrekt aufzuheben.

Grund für die fehlende Spezialisierung

Anfangs , das Weglassen von std::shared_ptr Die Spezialisierung schien bloßes Versehen zu sein. Es stellte sich jedoch heraus, dass es innerhalb der Bibliotheksarbeitsgruppe (LWG) keinen Konsens über die Hinzufügung einer solchen Funktion gab. Die Hauptsorge ergab sich aus dem Vorschlag, arithmetische Operationen für shared_ptr einzubeziehen, eine Funktion, die hätte verworfen werden können.

Letztendlich war das Fehlen eines Vorschlags für std::shared_ptr Die Spezialisierung erwies sich als ausschlaggebend für die Auslassung aus dem C-Standard. Während die Diskussionen unter LWG-Mitgliedern kürzlich wieder aufgenommen wurden, ist noch kein formeller Vorschlag zustande gekommen.

Aktueller Status

Trotz des Fehlens einer speziellen Vorlage führte C 17 eine teilweise Array-Unterstützung ein für shared_ptr, wie im dritten Fall der Methode shared_ptr::shared_ptr() angegeben. Dieses Update ermöglicht die Erstellung und Zerstörung von Arrays mithilfe von shared_ptr, allerdings ohne den Komfort einer speziellen Spezialisierung.

Zukunftsaussichten

Der Entwurf TS (Technische Spezifikation) N4077 skizzierte einen möglichen Weg zur Array-Unterstützung in shared_ptr, und diese Funktion wurde schließlich in C 17 integriert. Die Weiterentwicklung von C könnte weitere Verbesserungen in diesem Bereich mit sich bringen und zusätzliche Flexibilität und Ausdruckskraft für die Array-Verwaltung mithilfe gemeinsam genutzter Zeiger bieten.

Das obige ist der detaillierte Inhalt vonWarum hat „std::shared_ptr' keine Spezialisierung für Array-Typen?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage