Heim > Backend-Entwicklung > C++ > Hauptteil

Warum kann ich keine Nicht-Const-Referenzen an „std::async' übergeben?

Mary-Kate Olsen
Freigeben: 2024-10-28 06:32:30
Original
812 Leute haben es durchsucht

Why Can't I Pass Non-Const References to `std::async`?

Übergabe nicht konstanter Referenzen an std::async

In std::async führt die Übergabe einer nicht konstanten Referenz als Argument dazu in einem Fehler. Dies ist eine bewusste Entwurfsentscheidung.

Begründung

Es ist nicht immer möglich, zu bestimmen, ob ein Funktionsobjekt seine Argumente per Referenz akzeptiert. Daher muss std::async entweder alle Argumente kopieren oder sie als Referenz akzeptieren. Das Kopieren von Argumenten gewährleistet die Sicherheit, da sie nicht hängen bleiben oder Race-Bedingungen verursachen können.

Ausnahme: std::ref

Um nicht konstante Referenzparameter zuzulassen, std::ref verwendet werden kann. Dies ist ein explizites Opt-in für eine potenziell gefährliche Referenzsemantik, die einen sorgfältigen Umgang mit freien Referenzen und Rennbedingungen erfordert.

Das obige ist der detaillierte Inhalt vonWarum kann ich keine Nicht-Const-Referenzen an „std::async' übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage