Heim  >  Artikel  >  Backend-Entwicklung  >  Warum fehlen „std::optional“ Referenztypspezialisierungen?

Warum fehlen „std::optional“ Referenztypspezialisierungen?

Linda Hamilton
Linda HamiltonOriginal
2024-10-27 06:36:29960Durchsuche

Why Does `std::optional` Lack Reference Type Specializations?

Frage: Untersuchung des Fehlens von Referenztypspezialisierungen in std::optional

In Standard C stellt std::optional einen Container bereit einen Wert halten oder dessen Abwesenheit anzeigen. Im Gegensatz zu seinem Gegenstück in Boost mangelt es std::optional jedoch an Spezialisierungen für Referenztypen, sodass Benutzer sich fragen müssen: Warum? In diesem Artikel werden die Gründe für diese Entwurfsentscheidung untersucht und alternative Optionen untersucht, die in der Standardbibliothek verfügbar sind, um Verweise auf optionale Werte zu verarbeiten.

Antwort: Bedenken und Zukunftsaussichten ansprechen

Während des ersten Vorschlags (n3406) für optionale Werte äußerten Ausschussmitglieder Bedenken hinsichtlich optionaler Referenzen. Anschließend schlugen die Autoren in n3527 vor, optionale Verweise in einen Hilfsvorschlag aufzuteilen, um die Chancen der Übernahme optionaler Werte zu erhöhen.

Obwohl optionale Verweise aufgrund anderer Faktoren nicht in C 14 aufgenommen wurden, wurden sie von nicht abgelehnt das Komitee. Dies lässt die Möglichkeit offen, optionale Referenzen in einen zukünftigen C-Standard aufzunehmen, falls ein Vorschlag eingereicht wird.

Alternativen für die Referenzierung optionaler Werte

Trotz des Fehlens von std:: optionale Spezialisierung für Referenztypen bietet die Standardbibliothek eine Alternative zum Referenzieren optionaler Werte:

  • std::reference_wrapper>: Dies ermöglicht Sie können einen Verweis auf einen optionalen Wert erstellen und so sicherstellen, dass am optionalen Wert vorgenommene Änderungen im Verweis widergespiegelt werden. Es ist jedoch wichtig zu beachten, dass der optionale Wert unveränderlich bleibt, wenn die Referenz eine konstante Referenz ist (d. h. mit std::cref initialisiert).

Zusammenfassend lässt sich sagen, dass es an Referenztypspezialisierungen mangelt std::optional entstand aus Bedenken während des Vorschlagsprozesses. Der Ausschuss ist jedoch weiterhin offen für die Prüfung optionaler Referenzen in der Zukunft. Darüber hinaus stellt die Standardbibliothek std::reference_wrapper> als Alternative zur zwischenzeitlichen Referenzierung optionaler Werte.

Das obige ist der detaillierte Inhalt vonWarum fehlen „std::optional“ Referenztypspezialisierungen?. 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