std::shared_ptr
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
Insbesondere arithmetische Operationen auf std::shared_ptr
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
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!