मेरे पास कोड का निम्न भाग है जो विजुअल सी ++ 2015 के तहत संकलित नहीं होता है, लेकिन जीसीसी 4.8.4 के तहत करता है। मुझे आश्चर्य है कि कौन सा सही है? सवाल में कोड यहाँ नीचे है:टेम्पलेट पैरामीटर के रूप में विनिर्देशक ओवरराइड - क्या यह मान्य है?
template <class T> class ATemplate;
template <class R, class A1>
struct ATemplate<R(A1)>{ };
int main()
{
ATemplate<void(int)> x;
// ATemplate<void(int)override> y; //---Does not compile!!!
return 0;
}
यह गलत यहाँ नीचे (या स्थिरांक) विनिर्देशक के रूप में ओवरराइड उपयोग करने के लिए है। जीमेल लाइब्रेरी में इसी तरह का कोड मौजूद है, जहां मैक्रो विस्तार का उपयोग टेम्पलेट पैरामीटर (ओवरराइड समेत), साथ ही साथ वास्तविक फ़ंक्शन हस्ताक्षर उत्पन्न करने के लिए किया जाता है। जब बाहर टिप्पणी की लाइन को हटाने
विजुअल C++ 2015 निम्न त्रुटि पैदा करता है:
x.cpp(11): error C2062: type 'int' unexpected
x.cpp(11): error C2976: 'ATemplate': too few template arguments
x.cpp(4): note: see declaration of 'ATemplate'
x.cpp(11): error C2079: 'y' uses undefined class 'ATemplate'
उल्लेख ओवरराइड कि मुक्त कार्य (वैध बिंदु) के संदर्भ में कोई मतलब नहीं है नीचे जवाब में से एक - यह करता है मतलब जीसीसी यहाँ गलत है। कॉन्स विनिर्देश उस मामले में भी बेकार है (मुफ्त कार्यों के लिए), लेकिन फिर भी अनुमति (वीसी ++ द्वारा) ??? साथ ही, यह उल्लेख करता है कि आभासी विनिर्देश केवल घोषणा में ही मौजूद होना चाहिए - इससे इस मामले में कोई फर्क नहीं पड़ता है (क्योंकि कोई परिभाषा मौजूद नहीं है)। वर्चुअल कीवर्ड के लिए, व्युत्पन्न में छोड़ना ठीक है क्योंकि यह कोड संकलित करता है या नहीं, लेकिन ओवरराइड केस के लिए यह ठीक नहीं है क्योंकि यह एक बड़ा अंतर बनाता है।
ReturnType (ArgType आर्ग) ... संभव स्थिरांक या (जैसे GMock करता है) एक मैक्रो पैरामीटर के रूप में विनिर्देशक ओवरराइड का उपयोग करते समय प्रतिबंध VCC द्वारा लगाए गए इस कोड (भी जाहिरा तौर पर बजना के लिए मामला) को संकलित करने का कारण बनता है न । कौन सा सही है?
मानक यह नहीं बताता है कि इस संदर्भ में ओवरराइड विनिर्देशक का उपयोग नहीं किया जाएगा (टेम्पलेट पैरामीटर का संदर्भ?), है ना?
वोट मैं शायद कुछ स्पष्ट याद कर रहा हूँ से परखने के बाद, लेकिन जहां समारोह आप ओवरराइड करना चाहते है? –
@ करोलो हॉर्वथ जो अप्रासंगिक है –
@ करोलो हॉर्वथ, हां, यह अप्रासंगिक है। पोस्ट किया गया कोड न्यूनतम है और त्रुटि उत्पन्न करता है। –