2011-08-11 37 views
9

इसलिए मुझे पता है कि सी ++ में "टेम्पलेट टेम्पलेट पैरामीटर" नामक एक सुविधा है, जहां आप टेम्पलेट पैरामीटर के रूप में क्लास टेम्पलेट पास कर सकते हैं। उदाहरण के लिए:क्या फ़ंक्शन टेम्पलेट टेम्पलेट पैरामीटर जैसी कोई चीज़ है?

template <typename T> 
class vector { ... }; 

template <template <typename> class container> // this is a template template parameter 
class foo { ... }; 

... 

foo<vector> f; // pass the vector template itself as template parameter 

क्या फ़ंक्शन टेम्पलेट्स के लिए एक समान बात है? अर्थात। एक वर्ग टेम्पलेट को पास करने का कोई तरीका है (उदाहरण के लिए, std::make_pair) कक्षा में टेम्पलेट पैरामीटर के रूप में?

+0

क्या जादू वाक्य रचना का उपयोग करना चाहते हैं हो सकता है? – MSN

+0

@MSN: मैं एक फ़ंक्शन 'टेम्पलेट शून्य foo (F)' लिखना चाहता था जिसे 'foo (bar)' कहा जा सकता है, जहां 'bar' एक फ़ंक्शन टेम्पलेट है (उदाहरण के लिए 'टेम्पलेट शून्य बार (टी)')। 'foo' फिर विभिन्न प्रकार के तर्कों के साथ 'एफ' को कॉल कर सकता है। मैं इसे अपनी कल्पना के लिए छोड़ दूंगा कि '???' में क्या हो सकता है :) यह काम करने के लिए किया जा सकता है यदि 'बार' एक पॉलिमॉर्फिक फ़ंक्शन ऑब्जेक्ट है (यानी एक टेम्पलेट ऑपरेटर वाला गैर-टेम्पलेट क्लास ()), जिस स्थिति में 'foo' का टेम्पलेट पैरामीटर सामान्य प्रकार पैरामीटर होगा। [अगली टिप्पणी में जारी] – HighCommander4

+0

[पिछली टिप्पणी से जारी] हालांकि, मैं एक मौजूदा फ़ंक्शन टेम्पलेट 'बार' का उपयोग करना चाहता हूं, इसे बिना पॉलिमॉर्फिक फ़ंक्शन ऑब्जेक्ट के अनुकूलन के। – HighCommander4

उत्तर

12

सं

+0

लघु और मीठा। –

+1

यह बहुत बुरा है, मुझे यह उपयोगी लगेगा ... – HighCommander4

+0

@ HighCommander4: आप क्लास टेम्पलेट्स का उपयोग कर सकते हैं और स्थिर सदस्य फ़ंक्शंस को कॉल कर सकते हैं। –