Heim >Backend-Entwicklung >C++ >Warum können C-Container keine unvollständigen Typen enthalten?
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!