के आधार पर विभिन्न कार्यों का निष्पादन करें यह निश्चित रूप से एक मामूली सवाल है, लेकिन मैं यह नहीं समझ पाया कि यह कैसे करें।टेम्पलेट पैरामीटर विचलन
मेरे पास एक टेम्पलेट फ़ंक्शन है, template <unsigned int N> void my_function()
कहें। अब, मेरे पास my_function
के लिए दो अलग-अलग कार्यान्वयन हैं, पहले उपयोग किया जाना चाहिए यदि N
0 से बड़ा है, तो दूसरा, N
उससे छोटा है।
मैं इस तरह SFINAE का उपयोग करने की कोशिश की:
template <unsigned int N, typename = enable_if <N >= 100> :: type> my_function()
{
// First implementation
}
template <unsigned int N, typename = enable_if <N < 100> :: type> my_function()
{
// Second implementation
}
लेकिन उसी समारोह दो बार की घोषणा की है। फिर मैंने
template <unsigned int N, bool = (N >= 100)> my_function();
और फिर बूलियन के दो अलग-अलग मूल्यों के साथ दो कार्यों को कार्यान्वित करने की कोशिश की। कोई सफलता नहीं, क्योंकि यह आंशिक विशेषज्ञता है।
फिर मैंने N
को एक संरचना पैरामीटर के रूप में लपेटने की कोशिश की, और फ़ंक्शन कॉल में बूल, लेकिन यह क्लास को विशेषज्ञता देने से पहले सदस्य फ़ंक्शन को विशेषज्ञता दे रहा है, जो नहीं किया जा सकता है।
क्या ऐसा करने का कोई उचित तरीका है?
मुझे यह पसंद है! अगली बार मैं इसका इस्तेमाल करूंगा, धन्यवाद! –