2012-05-01 27 views
8

विज़ुअल स्टूडियो 2010 की tr1 सुविधाओं का उपयोग कैसे शुरू करता है? एक और विशिष्ट मामले के लिए, मुझे std :: tr1 :: फ़ंक्शन की आवश्यकता होती है। मैं #include <tr1/functional> जो लापता के रूप में जानकारी दी है, जबकि #include <functional> ठीक भी शामिल है सहित कोशिश की, लेकिन जब मैं इस सेट:विजुअल स्टूडियो 2010 (tr1 :: function) के साथ tr1 का उपयोग कैसे करें?

std::tr1::function<void(void)> callback; 

मैं:

1>d:\marmalade\projects\core\src\button.h(21): error C3083: 'tr1': the symbol to the left of a '::' must be a type 
1>d:\marmalade\projects\core\src\button.h(21): error C2039: 'function' : is not a member of '_STL' 
1>d:\marmalade\projects\core\src\button.h(21): error C2143: syntax error : missing ';' before '<' 
1>d:\marmalade\projects\core\src\button.h(21): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>d:\marmalade\projects\core\src\button.h(21): error C2238: unexpected token(s) preceding ';' 

अगर मैं बढ़ावा उपयोग करें, यह ठीक काम करता है, लेकिन इस परियोजना के लिए , एक विशिष्ट ढांचे का उपयोग करने के कारण मुझे विजुअल स्टूडियो टी 1 संस्करण की आवश्यकता होगी।

के रूप में, सुझाव tr1 लंघन, अब भी वही परिणाम देता है:

std::function<void(void)> callback; 

1>d:\marmalade\projects\core\src\button.h(20): error C2039: 'function' : is not a member of '_STL' 
1>d:\marmalade\projects\core\src\button.h(20): error C2143: syntax error : missing ';' before '<' 
1>d:\marmalade\projects\core\src\button.h(20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
1>d:\marmalade\projects\core\src\button.h(20): error C2238: unexpected token(s) preceding ';' 
+4

'tr1' [तकनीकी रिपोर्ट 1] (http://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1) के लिए खड़ा है जो सी ++ मानक में प्रस्तावित परिवर्धन की एक सूची थी। एक बार प्रस्ताव स्वीकार किए जाने के बाद, 'tr1' पदनाम अप्रचलित हो गया। –

+0

क्या आपने 'शामिल किया था? –

+0

हां, मैंने इसे शामिल किया था। – Speed

उत्तर

8

आपकी टिप्पणियों के आधार पर, और this page पर, मुझे लगता है कि मार्मलाडे अपने स्वयं के एसटीएल कार्यान्वयन के साथ आता है, जो कि पुराना प्रतीत होता है। This page सत्यापित करता है कि वे STLPort के संस्करण का उपयोग करते हैं, जो कि 2005 में बाहर आए TR1 का समर्थन नहीं करता है, बहुत कम कुछ भी नया। आपके विकल्प हैं:

1) कॉपी/उन खुद
2) के बिना
3) Download a newer version of STLPort क्या लिखें। ऐसा लगता है कि पिछले दो वर्षों में यह अपडेट नहीं किया गया है, इसलिए कोई सी ++ 11 नहीं है, लेकिन उनमें functional होने का उल्लेख है, लेकिन यह स्पष्ट नहीं है कि यह std या std::tr1 नेमस्पेस में है या नहीं। हालांकि, यह Marmalade के साथ काम नहीं कर सकता है, तो बैकअप बनाओ और सावधान रहें।

+1

मुझे लगता है कि यह बस के साथ बंडल है एसटीएलपोर्ट ([स्रोत] (http://www.madewithmarmalade.com/devnet/code-community)) ... भयानक। – ildjarn

+0

दरअसल, यह भयंकर है :( – Speed

+2

@ स्पीड: अपडेट किया गया उत्तर, STLPort _may का एक नया संस्करण या मई आपकी मदद नहीं करता। –

2

विजुअल स्टूडियो 2010 के साथ सी ++ 11 जहाजों डिफ़ॉल्ट रूप से सक्षम (या कम से कम क्या कार्यान्वित किया जाता है)। आपको std::function<void(void)> का उपयोग करने की आवश्यकता है।

एक पूर्ण तालिका see here के लिए।

एक तरफ के रूप में: आपको आजकल TR1 से कुछ भी उपयोग नहीं करना चाहिए। इसे नए मानक में एकीकृत किया गया है।

+0

भले ही, मुझे अभी भी वही त्रुटि मिलती है। 'Std :: function कॉलबैक;' पहली त्रुटि के बिना सटीक त्रुटि देता है: 'त्रुटि C2039:' function ':' _STL'' – Speed

+1

@Speed ​​का सदस्य नहीं है यह बहुत संदिग्ध लग रहा है। किसी भी अजीब 'परिभाषित' के लिए grep। – pmr

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