2013-11-21 9 views
5

मैं बाद में अपने परिणामों को पुनर्प्राप्त करने के लिए सूची में एसिंक का उपयोग करके उत्पन्न कई धागे के वायदा को स्टोर करना चाहता हूं।किसी सूची में भविष्य को संग्रहीत करना

future<int> f = async(doLater, parameter); 
list<future<int>> l; 
l.push_back(f); 

हालांकि संकलक प्रिंट

/usr/include/c++/4.7/bits/stl_list.h:115:71: error: use of deleted function 'std::future<_Res>::future(const std::future<_Res>&) [with _Res = int; std::future<_Res> = std::future]'

मैं कुछ गलत कर रहा हूँ या सूचियों वायदा स्टोर करने के लिए नहीं जा सकते निम्न त्रुटि संदेश? यदि वे नहीं हैं, तो इसके बजाय क्या उपयोग करें?

+4

http://www.youtube.com/watch?v=hdcTmpvDO0I –

+0

@ R.MartinhoFernandes मुझे समझ नहीं आता कि कैसे वीडियो प्रासंगिक है: एस – Roman

+0

तुम बस है इसे स्थानांतरित करने के :) –

उत्तर

10

std::future कॉपी करने योग्य नहीं है - आपको सूची में स्थानांतरित करने की आवश्यकता है। कोई एक:

future<int> f = async(doLater, parameter); 
list<future<int>> l; 
l.push_back(std::move(f)); 

या:

list<future<int>> l; 
l.push_back(async(doLater, parameter)); 

बाद बेहतर होने के साथ काम करेंगे, क्योंकि यह नहीं छोड़ता एक ले जाया गया-से दायरे कचरा वस्तु।

संबंधित मुद्दे