Heim >Backend-Entwicklung >C++ >Warum gibt es in der C-Standardbibliothek kein „std::shared_ptr'?

Warum gibt es in der C-Standardbibliothek kein „std::shared_ptr'?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 04:07:53524Durchsuche

Why isn't there a `std::shared_ptr` in the C   standard library?

Ein tieferer Einblick in die Abwesenheit von std::shared_ptr

In der C-Standardbibliothek gibt es eine spezielle Version von std::unique_ptr für Arrays, std::unique_ptr, das ist richtig ruft delete[] in seinem Destruktor auf. Allerdings fehlt eine solche Spezialisierung für std::shared_ptr, was die Verwendung von benutzerdefinierten Löschprogrammen wie dem in der Frage dargestellten erforderlich macht.

Begründung für die fehlende Spezialisierung

Das Fehlen von std::shared_ptr ergibt sich aus einer Kombination von Faktoren:

  • LWG-Diskussion: Die Library Working Group (LWG) prüfte die Idee, verwarf sie jedoch letztendlich aufgrund von Kontroversen um eine zusätzliche Funktion, die für shared_ptr< vorgeschlagen wurde. T[]>.
  • Mangel an formellem Vorschlag: Trotz Aufgrund informeller Diskussionen wurde der LWG noch nie ein offizieller Vorschlag zur Erstellung von std::shared_ptr vorgelegt.

Aktueller Status und Zukunftsaussichten

Trotz des historischen Zögerns haben die jüngsten Diskussionen das Interesse der LWG-Mitglieder neu entfacht. Während ein Prototyp umgesetzt wurde, steht ein formeller Vorschlag noch aus. Die Machbarkeit und endgültige Einführung von std::shared_ptr bleibt ungewiss.

Kommende Entwicklungen

Ein open-std.org-Entwurf TS (Technical Specification) schlägt Array-Unterstützung für std::shared_ptr vor. Wenn dieser TS angenommen wird, würde er std::shared_ptr einführen. als Teil des C-Standards.

Update für C 17

Der TS-Entwurf wurde inzwischen in C 17 integriert und bietet offizielle Unterstützung für std::shared_ptr. Einzelheiten finden Sie in Fall 3 von shared_ptr::shared_ptr().

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

Stellungnahme:
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