Heim  >  Artikel  >  Backend-Entwicklung  >  Warum kann ich keine Nicht-Const-Referenzen an „std::async“ übergeben?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-28 06:32:30725Durchsuche

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!

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