क्या यह वैध टेम्पलेट सी ++ टेम्पलेट्स में बना है?फ़ंक्शन पर टेम्पलेट टेम्पलेट पैरामीटर
template < template <typename T2> class T>
void foo() {
}
क्या यह वैध टेम्पलेट सी ++ टेम्पलेट्स में बना है?फ़ंक्शन पर टेम्पलेट टेम्पलेट पैरामीटर
template < template <typename T2> class T>
void foo() {
}
हां। यह मान्य है।
आप जो बिल्कुल एक टेम्पलेट पैरामीटर लेता है किसी भी वर्ग टेम्पलेट के साथ इस समारोह कॉल कर सकते हैं। उदाहरण के लिए,
template<typename T>
struct A
{
//...
};
foo<A>(); //ok
नोट आप की जरूरत नहीं है कि A
वर्ग टेम्पलेट, जिसका अर्थ है, निम्नलिखित संकलन त्रुटि में परिणाम होगा के लिए टेम्पलेट तर्क प्रदान करने के लिए:
foo< A<int> >(); //error
इसके अलावा, अपने कोड में T2
वैकल्पिक है, और वास्तव में, आप इसे समारोह में उपयोग नहीं कर सकते, तो बेहतर इसे हटाने परिभाषा सरल बनाने के लिए:
template < template <typename> class T>
void foo() {
T<int> x; //this is how T can be instantiated; provide template argument!
}
डेमो: http://ideone.com/8jlI5
इस मामले में 'टी 2' की तरह, क्या यह हमेशा वैकल्पिक है? मैं कक्षा टेम्पलेट्स पर इसका उपयोग नहीं कर सका। http://ideone.com/LEt6N – user103214
@ उपयोगकर्ता 974191: हां। यह कभी जरूरी नहीं है। आप टेम्पलेट परिभाषा में इसका उपयोग नहीं कर सकते! – Nawaz
@ChrisLutz, मुझे लगता है कि 'टी 2' वैकल्पिक है। – iammilind
@ChrisLutz: मुझे लगता है, वास्तव में नहीं। http://ideone.com/8jlI5 – Nawaz
@ नवाज - मुझे कहीं और पढ़ना याद है। मुझे लगता है कि आज पूरी जगह गलत है। मेरी गलती। –