Ho una funzione che restituisce un riferimento a uno std :: promessa:Promessa/futuro C++: quale ritorno da una funzione?
std::shared_ptr<std::promise<void>> play();
(Maggiori informazioni:. La funzione di riprodurre supporti su alcuni dispositivi, e il valore restituito rappresenta quando questo gioco è completo Se il gioco è chiamato una seconda volta, un valore non è impostato sulla promessa restituito la prima volta, e viene creata una nuova promessa e restituito per questa seconda convocazione)
il chiamante può quindi cogliere il valore e attendere sul futuro:
auto this_future = play()->get_future();
this_future.wait();
Doe s ha senso restituire un riferimento alla promessa, o dovrei invece restituire il futuro, in modo che la funzione chiamante non debba chiamare get_future()?
Avere uno std :: promise/std :: future in un file std :: shared_ptr potrebbe essere discutibile (rompe il concetto di non copia di std :: promise/std :: future) –
concordato; il shared_ptr era effettivamente necessario per aggirare questi problemi di non copia, poiché volevo archiviarli in una raccolta e restituirli da una funzione. Tuttavia, non riesco a vedere dove ciò potrebbe causare problemi. –
@ScottM: Puoi anche passare al futuro 'std :: move' se vuoi memorizzare in una raccolta, ad esempio' std :: vector> '. –
Nawaz