हम सन स्टूडियो 12.1 में माइग्रेट कर रहे हैं और नए कंपाइलर [सीसी: सन सी ++ 5.10 SunOS_sparc 2009/06/03] के साथ माइग्रेट कर रहे हैं। मुझे सन कंपाइलर के पूर्व संस्करण [सीसी: सन वर्कशॉप 6 अपडेट 2 सी ++ 5.3 2001/05/15] के साथ ठीक संकलित कोड को संकलित करते समय संकलन त्रुटि मिल रही है।सन स्टूडियो में टेम्पलेट संकलन त्रुटि 12
यह संकलन त्रुटि मुझे मिलती है।
"Sample.cc": Error: Could not find a match for LoopThrough(int[2]) needed in main(). 1 Error(s) detected. *** Error code 1.
कोड:
#include <iostream>
#define PRINT_TRACE(STR) \
std::cout << __FILE__ << ":" << __LINE__ << ":" << STR << "\n";
template<size_t SZ>
void LoopThrough(const int(&Item)[SZ])
{
PRINT_TRACE("Specialized version");
for (size_t index = 0; index < SZ; ++index)
{
std::cout << Item[index] << "\n";
}
}
/*
template<typename Type, size_t SZ>
void LoopThrough(const Type(&Item)[SZ])
{
PRINT_TRACE("Generic version");
}
*/
int main()
{
{
int arr[] = { 1, 2 };
LoopThrough(arr);
}
}
अगर मैं जेनेरिक संस्करण के साथ कोड uncomment, कोड ठीक संकलित करता है तथा जेनेरिक वर्जन कहा जाता है। मुझे एमएसवीसी 2010 के साथ इस समस्या को एक्सटेंशन अक्षम नहीं किया गया है और विचारधारा here के साथ एक ही मामला नहीं है। फ़ंक्शन का विशेष संस्करण कहा जाता है। अब सवाल यह है कि क्या यह सूर्य कंपाइलर में एक बग है?
यदि हां, तो हम एक बग रिपोर्ट कैसे दर्ज कर सकते हैं?
शायद स्थिरांक को हटाने है workarodun यह:
आपका सबसे अच्छा अस्थायी ठीक शायद एक दूसरे अधिभार है? – PlasmaHH
हां। Int arr [] को कॉन्स्ट को जोड़ने या जोड़ने के लिए आस-पास का कार्य है। लेकिन, यह जानना चाहेंगे कि यह संकलक में बग है या मेरी समझ गलत है। – Jagannath
संभावनाएं हैं अगर क्लैंग, जीसीसी, आओऔ और एमएसवीसी के नवीनतम संस्करण सहमत हैं, तो यह सनसीसी में एक बग है। यह भी ध्यान रखें कि सनसीसी (इन) बग्गी होने के लिए प्रसिद्ध है। जो सवाल की ओर जाता है: जीसीसी का उपयोग क्यों नहीं करते? – PlasmaHH