Ich habe eine Funktion, die einen Verweis auf ein std :: Versprechen zurück:C++ - Versprechen/Zukunft: Welche Rückkehr von einer Funktion?
std::shared_ptr<std::promise<void>> play();
(Weitere Informationen:. Die Funktion spielt Medien auf einem Gerät, und der Rückgabewert darstellt, wenn dieses Spiel abgeschlossen ist Wenn das Spiel ist genannt wird, ein zweites Mal, ein Wert zurückgegeben, das Versprechen zum ersten Mal, und ein neues Versprechen erstellt und kehrte für diesen zweiten Anruf)
der Anrufer kann dann den Wert fängt und auf der Zukunft warten:
auto this_future = play()->get_future();
this_future.wait();
Doe Ist es sinnvoll, einen Verweis auf die Zusage zurückzugeben, oder soll ich stattdessen die Zukunft zurückgeben, damit die aufrufende Funktion nicht get_future() aufrufen muss?
Ein std :: promise/std :: future in einem std :: shared_ptr könnte fraglich sein (Es bricht das Nicht-Kopie-Konzept von std :: promise/std :: future) –
Einverstanden; Die Datei shared_ptr wurde tatsächlich benötigt, um diese Probleme zu umgehen, da ich sie in einer Sammlung speichern und von einer Funktion zurückgeben wollte. Ich kann jedoch nicht sehen, wo dies Probleme verursachen würde. –
@ScottM: Sie können auch 'std :: move' futures, wenn Sie dann in einer Sammlung speichern möchten, sagen' std :: vector> '. –
Nawaz