पैकेज किए गए कार्यों का उपयोग करते समय मुझे कुछ अजीब लग रहा है। ~packaged_task पढ़ने पर मुझे लगता है कि अगर std::packaged_task
इसे निष्पादित करने से पहले नष्ट कर दिया गया है, तो वादा तोड़ दिया जाएगा और भविष्य से परिणाम प्राप्त करने का प्रयास std::future_error
फेंकना चाहिए।std :: packaged_task विनाश पर वादे तोड़ नहीं?
हालांकि, विजुअल स्टूडियो 2013 पर यह मामला प्रतीत नहीं होता है। इस निम्नलिखित कोड डालें:
#include <iostream>
#include <future>
#include <functional>
int main() {
std::future<int> f;
{
std::packaged_task<int()> task([](){return 3; });
f = task.get_future();
}
std::cout<<f.get()<<std::endl;
return 0;
}
मैं पैक कार्य के लिए इंतजार कर निष्पादित करने के लिए एक std::future_error
f.get()
पर लेकिन इसके बजाय यह ब्लॉक पाने के लिए उम्मीद कर रहा हूँ,।
एक और संकलक कोशिश कर रहा है: http://ideone.com/Wt0WOc वास्तव में एक std::future_error("Broken promise")
...
Am मैं दृश्य स्टूडियो 2013 में एक बग को देखने या मैं कुछ चूक गए फेंक करता है?
तो क्या मैंने उन लिंक को सही ढंग से पढ़ा, यह वीएस 2013 में तय नहीं किया जाएगा? –
@EmilyL। मैं बहुत असंभव कहूंगा। [इस पृष्ठ के एफएक्यू अनुभाग में [Q5] के अनुसार] (http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking -changes-in-vs-2013.aspx), वे केवल दुर्लभ रूप से बगफिक्स का बैकपोर्ट करते हैं। –
बढ़िया, हमने खरीदा स्टूडियो मुश्किल से एक वर्ष पुराना है और वे पहले से ही हमें चुटकी में छोड़ रहे हैं। * श्वास * पुष्टि के लिए धन्यवाद। इस जवाब को स्वीकार करते हुए लिंक ने मेरे संदेहों पर अंतिम पुष्टि की। –