C-Container verbieten bekanntermaßen die Instanziierung mit unvollständigen Typen. Die Containerbibliothek von Boost umgeht diese Einschränkung, was Fragen zu ihrem Zweck und möglichen Nachteilen aufwirft.
Begründung für die Einschränkung
In der Vergangenheit stellte das C-Standardisierungskomitee unterschiedliche Implementierungsverhalten als unvollständig fest Typen über verschiedene STL-Implementierungen hinweg. Um die Kompatibilität sicherzustellen und Verwirrung zu vermeiden, haben sie unvollständige Typen in Standardbibliothekscontainern ausdrücklich verboten.
Potenzielle Nachteile des Zulassens unvollständiger Typen
Das Zulassen unvollständiger Typen könnte zwar erweiterte Datenstrukturen ermöglichen , könnte es auch zu Laufzeitproblemen kommen. Unvollständigen Typen fehlen notwendige Informationen, was es für Container schwierig macht, die Speicherzuweisung und Objektlebensdauer zu verwalten.
Zukünftige Möglichkeiten
Das C-Komitee hat die potenziellen Vorteile der Zulassung unvollständiger Typen erkannt Typen. Im Jahr 2002 deutete der Vorsitzende der Bibliotheksarbeitsgruppe an, dass diese Einschränkung in zukünftigen Versionen von C gelockert werden könnte. Ab dem aktuellen Standard bleibt das Verbot jedoch bestehen.
Boosts Lösung
Boost-Entwickler erkannten die Einschränkungen des Standardansatzes und erstellten ihre eigenen Container, die dazu in der Lage sind Arbeiten mit unvollständigen Typen. Dies ermöglichte die Erstellung rekursiver Datenstrukturen, die sonst mit der Standardbibliothek nicht möglich wären.
C 17 Teilweise Zulassung
C 17 führte mit Sicherheit eine teilweise Lockerung dieser Einschränkung ein Container, die die Verwendung unvollständiger Typen für Typen ermöglichen, die im Elementtyp oder Schlüsseltyp des Containers vorwärtsdeklariert werden. Diese begrenzte Zuteilung verbessert die Kompatibilität mit einigen modernen Programmiermustern und gewährleistet gleichzeitig die Stabilität mit vorhandenen Implementierungen.
Das obige ist der detaillierte Inhalt vonWarum können C-Standardcontainer keine unvollständigen Typen verwenden und welche Problemumgehungen gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!