Ü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!