करके एक टेम्पलेटविशेषज्ञ तर्क की सकारात्मकता के आधार पर टेम्पलेट
template <int n>
void f(){...};
मैं जानता हूँ कि मैं n
के विशिष्ट मानों के लिए यह विशेषज्ञ कर सकते हैं को देखते हुए:
template <>
void f<2>(){...};
लेकिन, एक तरीका है जिसके लिए मुझे अनुमति देता है सभी सकारात्मक n
के लिए इसे विशेषज्ञ बनाने के लिए?
मैं निम्नलिखित
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
कर के बारे में सोचा तो n<0
के लिए इस कोड को अमान्य है और संकलक पिछली परिभाषा का सहारा होगा। दुर्भाग्य से, मुझे लगता है कि एक redefinition of 'void f<n>()'
त्रुटि है।
नोट: मुझे लगता है कि यह शायद मानक द्वारा समर्थित नहीं है। मैं पूछ रहा हूं कि इस प्रभाव को प्राप्त करने के लिए कुछ विधि (शायद कुछ टेम्पलेट मेटाप्रोग्रामिंग) नहीं है।
शैली का मामला, लेकिन मैं वापसी प्रकार पर 'enable_if' रखना पसंद करता हूं इसलिए भ्रमित चीजों (उपयोगकर्ताओं और फ़ंक्शन के प्रकार) के आसपास लटकने वाला जादू पैरामीटर नहीं है। – GManNickG