के लिए टेम्पलेट विशेषज्ञता मेरे पास एक विविध टेम्पलेट फ़ंक्शन है जो स्वयं सूची में सबसे बड़ी संख्या निर्धारित करने के लिए कहता है (टेम्पलेटलाइज्ड तर्कों द्वारा गठित)। मैं पैरामीटर पैक खाली होने पर एक विशेषज्ञता बनाने की कोशिश कर रहा हूं, इसलिए मैं सूची के सामने नंबर वापस कर सकता हूं, लेकिन मुझे नहीं पता कि यह कैसे करना है। मैं सिर्फ variadic टेम्पलेट्स और टेम्पलेट विशेषज्ञता के साथ परिचित बनने रहा हूँ, लेकिन यह है कि क्या मैं अब तक है:खाली पैरामीटर पैक
#include <string>
#include <iostream>
using namespace std;
template <int N, int... N2>
int tmax() {
return N > tmax<N2...>() ? N : tmax<N2...>();
}
template <int N>
int tmax() {
return N;
}
int main() {
cout << tmax<32, 43, 54, 12, 23, 34>();
}
बहरहाल, यह निम्न त्रुटि पैदा करता है:
test.cpp: In function ‘int tmax() [with int N = 34, int ...N2 = {}]’:
test.cpp:9:45: instantiated from ‘int tmax() [with int N = 23, int ...N2 = {34}]’
test.cpp:9:45: instantiated from ‘int tmax() [with int N = 12, int ...N2 = {23, 34}]’
test.cpp:9:45: instantiated from ‘int tmax() [with int N = 54, int ...N2 = {12, 23, 34}]’
test.cpp:9:45: instantiated from ‘int tmax() [with int N = 43, int ...N2 = {54, 12, 23, 34}]’
test.cpp:9:45: instantiated from ‘int tmax() [with int N = 32, int ...N2 = {43, 54, 12, 23, 34}]’
test.cpp:18:39: instantiated from here
test.cpp:9:45: error: no matching function for call to ‘tmax()’
test.cpp:9:45: error: no matching function for call to ‘tmax()’
मैं भी इस की कोशिश की है, बस देखने के लिए अगर यह काम करेगा (हालांकि यह सूची में नंबर 0 का परिचय बेतरतीब ढंग से इतना है कि यह कभी भी एक संख्या 0 से कम नहीं लौट सकते):
template <int N, int... N2>
int tmax() {
return N > tmax<N2...>() ? N : tmax<N2...>();
}
template <>
int tmax<>() {
return 0;
}
हालांकि, त्रुटियों ऊपर उल्लेख के अलावा में, मैं इस त्रुटि मिलती है:
error: template-id ‘tmax<>’ for ‘int tmax()’ does not match any template declaration
तो मैं इस काम के पाने के लिए क्या करना चाहिए?
मैं -std=c++0x
ध्वज के साथ जी ++ 4.5.2 का उपयोग कर रहा हूं।
इष्टतम, धन्यवाद। –
सिर/पूंछ के फैशन में स्पष्ट रूप से "विभाजित" पैरामीटर पैक की आवश्यकता ने मुझे पहले से ही कुछ बार काट दिया है, मुझे उम्मीद है कि हम इसका उपयोग करेंगे ... हालांकि मुझे नहीं लगता कि बेस केस पहले अनिवार्य है , जैसा कि है, मैं आमतौर पर उन्हें तुरंत बाद में डाल दिया। –