मैं निम्नलिखित सीपीपी कोड है: जब मैं इस का उपयोग करते हुए दृश्य स्टूडियो 2013 को संकलित करने की कोशिशसंकलक त्रुटि विजुअल C++ के तहत टेम्पलेट विशेषज्ञता का उपयोग कर
#include <iostream>
#include <limits>
// C2589 when compiling with specialization, fine when compiling without
template<typename T>
void foo(T value = std::numeric_limits<T>::infinity())
{
}
// this specialization causes compiler error C2589 above
template<>
void foo<float>(float value)
{
}
int main()
{
foo<float>();
return 0;
}
, मैं निम्न त्रुटि:
..\check2\main.cpp(5) : error C2589: '::' : illegal token on right side of '::'
..\check2\main.cpp(5) : error C2059: syntax error : '::'
यदि मैं विशेषज्ञता foo<float>
विशेषज्ञता शामिल नहीं करता हूं तो प्रोग्राम ठीक से संकलित करता है। यह कोड gc 4.8.4 के तहत विशेषज्ञता सहित ठीक को संकलित करता है, जो विजुअल सी ++ कंपाइलर के साथ कुछ समस्या इंगित करता है।
क्या कोड सही है और इसे संकलित करना चाहिए? क्या दृश्य सी ++ के लिए कोई कामकाज है?
मेरे पास टी नहीं है वह वीएस2015 पर एक ही त्रुटि है, लेकिन यह [यहां] संकलित करता है (http://ideone.com/ttD7BH)। –
@ बेन: अच्छा बिंदु। मुझे इस साइट के बारे में पता नहीं था। मैं यह नहीं समझ पाया कि वे किस कंपाइलर का उपयोग करते हैं लेकिन चूंकि यह सफलतापूर्वक संकलित करता है, इसलिए मैं इसकी जीसीसी मानता हूं। यह मुझे पहेली करता है कि यह जीसीसी के साथ क्यों संकलित करता है लेकिन वीसी ++ के साथ विफल रहता है। – dkoerner