मान लीजिए मैं निम्नलिखित वर्ग है:सी ++ अनुमान टेम्पलेट अन्य टेम्पलेट तर्क के आधार पर तर्क
template <class T, class U, class V> Foo
{
...
};
टेम्प्लेट पैरामीटर एक अलग मानचित्रण है, इसलिए मैं अन्य टेम्पलेट तर्क यू और वी क्या टी है के आधार पर यह मान सकते हैं । उदाहरण के लिए, यदि टी डबल है, तो यू और वी हमेशा कुछ कक्षाएं डी 1 और डी 2 होंगी, और यदि टी फ्लोट हो, तो यू और वी हमेशा कुछ अन्य वर्ग एफ 1 और एफ 2 होंगे।
इस बात को ध्यान में रखते हुए, क्या मैं एकमात्र टेम्पलेट तर्क में पास कर सकता हूं, और संकलक अन्य दो पैरामीटर को कम कर सकता है?
मुझे पता है कि सरल उत्तर यह होगा कि इन अन्य वर्गों को भी टेम्पलेट किया जाए और टेम्पलेट तर्क टी को पास कर दें, लेकिन मैं इन कक्षाओं को टेम्पलेट (वे एक उपकरण द्वारा स्वत: जेनरेट नहीं कर सकते हैं) बनाने में सक्षम नहीं हैं।
आदर्श रूप में मैं बहुत की तरह typedef या #define का उपयोग करने में सक्षम होगा:
typedef Foo<double> Foo<double, D1, D2>
typedef Foo<float> Foo<float, F1, F2>
हालांकि इन संकलन नहीं है। मैं सोच रहा हूं कि इस समस्या को हल करने के लिए टेम्पलेट मेटाप्रोग्रामिंग या टेम्पलेट टेम्पलेट पैरामीटर का उपयोग करने का कोई तरीका है, लेकिन मुझे लगता है कि मेरे सिर उन अवधारणाओं को लपेटने के लिए प्रतीत नहीं होता है, और मुझे लगता है कि वहां शायद एक आसान जवाब भी है। किसी के पास कोई विचार है?
धन्यवाद! यह पूरी तरह से काम करता है। – thompsonja
@ थॉम्पसोनजा: खुशी हुई इससे मदद मिली :-) –