मैं जो मैं एक चर के आकार पाने के लिए उपयोग करने के एक वर्ग टेम्पलेट है:कॉन्स्ट और गैर स्थिरांक टेम्पलेट विशेषज्ञता
template <class T>
class Size
{
unsigned int operator() (T) {return sizeof(T);}
};
यह ठीक काम करता है, लेकिन तार के लिए मैं sizeof के बजाय strlen उपयोग करना चाहते हैं:
template <>
class Size<char *>
{
unsigned int operator() (char *str) {return strlen(str);}
};
समस्या तब होती है जब मैं कॉन्स char के साथ आकार का उदाहरण बना देता हूं * यह अनन्य संस्करण में जाता है। मैं सोच रहा था कि टेम्पलेट विशेषज्ञता पर char * के दोनों कॉन्स्ट और गैर-कॉन्स संस्करणों को कैप्चर करने का कोई तरीका है या नहीं? धन्यवाद। इस तकनीक
मैं इस आश्वस्त नहीं कर रहा हूँ एक है अच्छा विचार। उस मामले के बारे में क्या है जहां आपके पास '(const) char *' है जो स्ट्रिंग पर इंगित नहीं करता है? –
क्या यह केवल 'const' संस्करण को विशेषज्ञ करने के लिए काम करता है? – Bingo
तब जब आप एक गैर कॉन्स चार पास करते हैं * यह विशेषज्ञता का उपयोग नहीं करता है। –