Optional in C: Warum keine Spezialisierung für Referenztypen?
Trotz der Spezialisierung für Referenztypen in Bibliotheken wie Boost, dem C std::optional der Standardbibliothek bietet eine solche Funktion nicht. Diese Entscheidung hat Fragen zu ihrer Begründung und möglichen alternativen Mechanismen ausgelöst.
Begründung hinter der Unterlassung
Während der Diskussion von n3406 (der Vorschlag für optional) wurden Bedenken geäußert bezüglich der Aufnahme optionaler Referenzen. Die Autoren von n3527 erkannten diese Einwände und trennten optionale Referenzen in einen Hilfsvorschlag, um die Akzeptanzwahrscheinlichkeit für standardmäßige optionale Werte zu erhöhen. Auch wenn „optional“ aus nicht zusammenhängenden Gründen letztlich nicht in C 14 aufgenommen wurde, stellte die Ablehnung optionaler Verweise durch das Komitee kein Problem dar.
Aktuelle Alternativen
Obwohl std::optional keine Spezialisierung für Referenztypen bietet, fehlt der Standardbibliothek ein äquivalentes Konstrukt, das die Semantik „Referenz auf möglicherweise vorhandenes Objekt“ bereitstellt. Dies kann dazu führen, dass Entwickler nach Alternativen suchen:
Zukünftige Überlegungen
Während optionale Referenzen derzeit in der fehlen C-Standardbibliothek hat das Komitee ihre zukünftige Aufnahme nicht ausgeschlossen. Sollte ein formeller Vorschlag eingereicht werden, hängt die Entscheidung letztendlich von der Bewertung der Vorzüge der vorgeschlagenen Funktion durch den Ausschuss ab.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3