2012-06-22 10 views
6

में काम नहीं करता है this post में चरणों का पालन करने के बाद मैं ग्रहण (इंडिगो) unique_ptr (और अन्य सी ++ 11 नई सामग्री) को पहचानने में कामयाब रहा। समस्या यह है कि operator->unique_ptr के लिए ग्रहण में समर्थित नहीं है।अद्वितीय_ptr के लिए ड्रेफरेंस ऑपरेटर ग्रहण

class Foo { void bar() { /* ... */ } }; 

std::unique_ptr<Foo> foo; 
(*foo).bar(); // 1 
foo->bar(); // 2 

प्रकरण 1 अपेक्षा के अनुरूप काम करता है:: कोई त्रुटि और स्वतः पूर्ण काम करता है यहाँ आप एक उदाहरण है। 2 के मामले में, हालांकि, ग्रहण एक त्रुटि के साथ कथन को चिह्नित करता है ("विधि 'बार' को हल नहीं किया जा सका"), साथ ही foo-> से स्वत: पूर्णता काम नहीं करती है।

सबसे दिलचस्प बात यह है कि मुझे std::shared_ptr के साथ कोई समस्या नहीं है। यह केवल std::unique_ptr के लिए होता है।

क्या किसी ने भी एक ही समस्या का अनुभव किया है? क्या किसी को इसे ठीक करने का कोई तरीका पता है?

संपादित करें: केवल स्पष्टीकरण उद्देश्यों के लिए, संकलन प्रक्रिया ऊपर दिखाए गए कोड स्निपेट के लिए ठीक है। तो, समस्या संकलक में नहीं है, लेकिन ग्रहण पर है।

+0

@dirk: प्रश्न आईडीई में स्वत: पूर्णता और स्थैतिक लिंट-पिकिंग के बारे में है; संकलन के मुद्दों का कोई जिक्र नहीं है। – Rook

+0

@dirkgently मैं g ++ 4.6 का उपयोग कर रहा हूं, इसलिए संकलन ठीक हो जाता है। समस्या केवल ग्रहण को प्रभावित करती है। – betabandido

+0

@ रॉक: दाएं। मैं उस बिट को याद किया। – dirkgently

उत्तर

0

मुझे अंततः सीडीटी में bug report मिला है जो मुझे पीड़ित एक ही समस्या का वर्णन करता है। अब तक, वहाँ समस्या के लिए एक असली ठीक नहीं है, लेकिन वहाँ एक समाधान है कि बग रिपोर्ट में विस्तार से बताया है:

हाँ, जीसीसी 4.5 नवीनतम जीसीसी संस्करण जिसका पुस्तकालय हेडर हो सकता है सही ढंग से CDT द्वारा अनुक्रमित है। 4.6 हेडर इंडेक्स में विफल होने का मुख्य कारण सीडीटी की कमी 'कॉन्स्टेक्सप्र' और 'नलप्टर' के समर्थन के लिए है, जिसका उपयोग 4.6 हेडर में बड़े पैमाने पर किया जाता है (जिस तरह से जूनो के लिए लागू किया जा रहा है?)।

मैं दोनों जीसीसी 4.5 और 4.6 मेरी सिस्टम पर स्थापित होने, और 4.5 के हेडर को CDT इंगित करके इस के आसपास काम किया है (संकलक मंगलाचरण के लिए आदेश की स्थापना करके 'जी ++ - 4.5' डिस्कवरी विकल्प में), जबकि वास्तव में 4.6 के साथ संकलन।

0

यह समस्या हाल ही में सीडीटी 8.1.1 में तय की गई है। बस सहायता-> अपडेट के लिए जांचें और इसे डाउनलोड और इंस्टॉल किया जाएगा। मैंने unique_ptr का परीक्षण किया है और यह ठीक से अनुक्रमित है।

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