template<typename T1, typename T2>
class Bimap {
public:
class Data {
private:
template<typename T> Data& set(T);
template<> Data& set<T1>(typename T1 v) { /*...*/ }
};
};
जो मुझे त्रुटि देता है "गैर नाम स्थान दायरे में स्पष्ट विशेषज्ञता":सी ++: त्रुटि
error: explicit specialization in non-namespace scope 'class Bimap<T1, T2>::Data'
मैं समझता हूँ कि क्या त्रुटि कह रहा है। लेकिन मैं ऐसा क्यों नहीं कर सकता? और मैं इसे कैसे ठीक कर सकता हूं?
यह ध्यान देने योग्य है कि कुछ कंपाइलर्स इसका समर्थन करेंगे। – Puppy
सी ++ में आप स्पष्ट रूप से संलग्न क्लास टेम्पलेट को विशेषज्ञता के बिना सदस्य टेम्पलेट को स्पष्ट रूप से विशेषज्ञ नहीं कर सकते हैं। क्या करने की कोशिश कर रहे हैं (अर्थात्, विशेषज्ञता) * संभव नहीं है *। आपको ओवरलोडिंग का उपयोग करना होगा। या पूरी चीज को पूरी तरह से फिर से डिजाइन करें। एमएसवीसी ++ एक कंपाइलर है जो इसे एक विस्तार के रूप में अनुमति देता है। – AnT