की स्पष्ट विशेषज्ञता मुझे किसी प्रकार के लिए टेम्पलेट सदस्य फ़ंक्शन का विशेषज्ञ होना चाहिए (मान लें डबल)। यह ठीक काम करता है जबकि कक्षा X
स्वयं टेम्पलेट वर्ग नहीं है, लेकिन जब मैं इसे टेम्पलेट बना देता हूं तो जीसीसी संकलन-समय त्रुटियों को देना शुरू कर देता है।टेम्पलेट क्लास सदस्य फ़ंक्शन
#include <iostream>
#include <cmath>
template <class C> class X
{
public:
template <class T> void get_as();
};
template <class C>
void X<C>::get_as<double>()
{
}
int main()
{
X<int> x;
x.get_as();
}
यहाँ त्रुटि संदेश
source.cpp:11:27: error: template-id
'get_as<double>' in declaration of primary template
source.cpp:11:6: error: prototype for
'void X<C>::get_as()' does not match any in class 'X<C>'
source.cpp:7:35: error: candidate is:
template<class C> template<class T> void X::get_as()
मैं ऐसा कैसे ठीक कर सकते हैं और क्या समस्या यहाँ है?
अग्रिम धन्यवाद।
यह वर्तमान मानक में अवैध है, विशेषज्ञता के लिए, आपको कक्षा को भी विशेषज्ञता देना है ... – Nim
लेकिन यह काम करता है अगर कक्षा टेम्पलेट नहीं है। क्या यह भी अवैध है? – ledokol
नहीं, यह बिल्कुल ठीक है, यह केवल क्लास टेम्पलेट्स के लिए है कि यह नियम लागू होता है (AFAIK)। – Nim