2011-06-10 9 views
8

लिनक्स में संकलित करने के लिए कुछ कोड पोर्ट करने का प्रयास करते समय मुझे असाधारण संकलन त्रुटियां मिलती हैं। कोडबेस के माध्यम से खोजकर मैं अंततः इसे निम्नलिखित कोड पर ले जाने का प्रबंधन करता हूं।जीसीसी में टेम्पलेट कार्यों में boost :: tuple's .get का उपयोग क्यों नहीं कर रहा है?

5: // include and using statements 
6: template<typename RT, typename T1> 
7: RT func(tuple<T1> const& t) { 
8:  return t.get<0>(); 
9: } 
10: // test code 

इसका इस्तेमाल करने की मैं त्रुटि मिलती है की कोशिश कर रहा:

test.cpp: In function <functionName>: 
test.cpp:8: error: expected primary-expression before ‘)’ token 

कोड दृश्य स्टूडियो में लेकिन किसी कारण मैं समझ नहीं क्यों यह जी के साथ काम नहीं करता है ++ के लिए ठीक काम करता है। यहां किसी को भी एक सुराग मिला कि इस पर कैसे काम करना है?

उत्तर

17

आप कुछ template प्यार की जरूरत है:

return t.template get<0>(); 

विजुअल C++ सही ढंग से टेम्पलेट्स पार्स नहीं करता है, जिसके कारण इसे गलत तरीके से template कीवर्ड के बिना कोड स्वीकार करता है। template पर क्यों अधिक जानकारी के लिए, स्टैक ओवरफ़्लो सी ++ एफएक्यू "Where and why do I have to put “template” and “typename” on dependent names?"

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