c++ - std::packaged_task bug in Visual Studio? -
मुझे पता चला है कि std :: packaged_task को Std :: vector यदि पैरामीटर का प्रकार दृश्य स्टूडियो (2012, 2013, नवंबर 2013 सीटीपी) में शून्य देता है। उदाहरण के लिए,
typedef std :: packaged_task & lt; void () & gt; packaged_task; std :: वेक्टर & LT; packaged_task & gt; कार्य; Packaged_task पैकेज; tasks.push_back (std :: चाल (पैकेज)); त्रुटि संदेश हैं: त्रुटि C2182: '_Get_value': अवैध टाइप 'शून्य' त्रुटि का उपयोग C2182: '_Val': का अवैध उपयोग टाइप 'शून्य' त्रुटि C2182: '_Val': गैरकानूनी प्रकार 'शून्य' त्रुटि का उपयोग C2512: 'std :: _ Promise & lt; int & gt;' : कोई उचित डिफ़ॉल्ट कन्स्ट्रक्टर उपलब्ध त्रुटि C2665: 'std :: forward': 2 अतिभारियों में से कोई भी सभी तर्क प्रकारों को रूपांतरित नहीं कर सकता
मुझे लगता है कि यह बग है क्योंकि यह कोड स्निपेट अगर < / P>
- रिटर्न प्रकार
शून्य नहीं है, - इसे XCode में संकलित किया गया है।
क्या समाधान हैं या दृश्य स्टूडियो में अन्य विकल्प? मुझे पता है कि इसे बदलने के लिए बढ़ावा दिया जा सकता है।
मैं इसे एक सरल ऑटो एम = std :: move (पैकेज); ।
int main () {typedef std :: packaged_task & lt; void () & gt; packagedtask; पैकेटटास्क पी 1; पैकेटटास्क पी 2; P2 = std :: चाल (पी 1); // त्रुटि ऑटो p3 = std :: चाल (पी 2) का कारण नहीं है; // कारण त्रुटि का कारण बनता है} कोड के माध्यम से ट्रैवलिंग, packaged_task ने निम्न प्रकार की टाइपिंग के रूप में एम्बेड किया है;
typedef typename _P_arg_type & lt; _Ret & gt; :: प्रकार _Ptype; टाइप-एफ़ _Promise & lt; _Ptype & gt; _MyPromiseType; _P_arg_type रिटर्न प्रकार शून्य है, जब एक गैर-शून्य प्रकार प्रदान करता है। packaged_task चालन निर्माता में आंतरिक _Promise के रूप में _Promise & lt; _Ret & gt; ;
_MyPromise के लिए एक संदर्भ होता है _STD फ़ॉरवर्ड & lt; _Promise & lt; _Ret & gt; & gt; (_ अन्य ._MyPromise)) यह तब _Promise & lt; void & gt; बन जाता है, जो बदले में उत्पन्न अमान्य कोड उत्पन्न करता है देखा त्रुटियों की सूची यह संभवतः होना चाहिए;
_MyPromise (_STD फ़ॉरवर्ड & lt; _MyPromiseType & gt; (_ Other._MyPromise)) संभवत: एक चाल के उपयोग के रूप में भी असाइनमेंट ऑपरेटर करता है।
एक वैकल्पिक हल के रूप में, किसी प्रकार के "डमी" या "अनुपयोगी" रिटर्न प्रकार को जोड़ने पर विचार करें;
struct unusable {}; या बस केवल एक int या बढ़ावा देने के रूप में आप पहले से ही सुझाव दिया है।
Comments
Post a Comment