Heim >Backend-Entwicklung >C++ >Warum können C-Container keine unvollständigen Typen enthalten?

Warum können C-Container keine unvollständigen Typen enthalten?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 07:26:10214Durchsuche

Why Can't C   Containers Hold Incomplete Types?

Warum unvollständige Typen in C-Containern verboten sind

Frage:

Warum funktioniert der C Der Standard verbietet die Existenz von Containern unvollständiger Typen instanziiert?

Antwort:

Die diesbezügliche Entscheidung des C-Standardisierungsausschusses hatte historische Gründe.

Erste Tests ergaben, dass auch einfache Beispiele von Containern mit unvollständigen Typen funktionierte nicht in allen STL-Implementierungen konsistent. Dieser Mangel an Klarheit veranlasste das Komitee dazu, das undefinierte Verhalten von STL-Containern bei der Arbeit mit unvollständigen Typen zu erklären und dieses Verbot auf den Rest der Standardbibliothek auszudehnen.

Diese Entscheidung wurde getroffen, um zu vermeiden, dass bestehende Bibliotheksimplementierungen, die dies taten, ungültig gemacht werden unterstützen unvollständige Typen nicht rückwirkend.

Trotz des anfänglichen Verbots erkannte Matt Austern, Vorsitzender der Bibliotheksarbeitsgruppe des Ausschusses, die Möglichkeit an, diese Einschränkung in zukünftigen C zu lockern Überarbeitungen.

Während das Verbot immer noch im aktuellen Standard besteht, demonstriert boost::container die Machbarkeit von Containern, die unvollständige Typen zulassen, und bietet eine Lösung für Situationen, in denen dies gewünscht ist.

Das obige ist der detaillierte Inhalt vonWarum können C-Container keine unvollständigen Typen enthalten?. 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