std::vector<int>
में कक्षा टेम्पलेट std::vector
पैरामीटर के रूप में int
टाइप किया गया है। std::get<42>(some_tuple)
में, फ़ंक्शन टेम्पलेट std::get
पैरामीटर के रूप में 42
मान को पारित किया गया है। शायद अकल्पनीय रूप से पूर्व प्रकार के तर्क को टेम्पलेट (या टेम्पलेट प्रकार तर्क) का एक प्रकार तर्क कहा जाता है जबकि बाद वाला प्रकार एक (टेम्पलेट) गैर-प्रकार तर्क होता है।
लेकिन टेम्पलेट्स अन्य प्रकार के तर्क भी स्वीकार कर सकते हैं: अन्य टेम्पलेट्स। उदाहरण के लिए template<template<typename> class T> void foo();
टेम्पलेट को तर्क के रूप में लेते हुए एक फ़ंक्शन टेम्पलेट घोषित करता है, जो स्वयं एक प्रकार का तर्क लेता है। (एक नोट के रूप में, जबकि टेम्पलेट्स 'गैर-प्रकार तर्क' शब्द नहीं हैं, फिर भी टेम्पलेट टेम्पलेट तर्कों को कवर नहीं करते हैं। यह template<int NonTypeArgument>
जैसे तर्कों के लिए आरक्षित है।)
चूंकि टेम्पलेट टेम्पलेट में ऐसी कोई चीज़ नहीं है सी ++ (कक्षा, फ़ंक्शन, और उपनाम टेम्पलेट्स हैं - लेकिन वे सामूहिक रूप से 'टेम्पलेट्स' वैसे भी हैं), टेम्पलेट टेम्पलेट टेम्पलेट पैरामीटर जैसी कोई चीज़ नहीं है। आपके पास मिल टेम्पलेट टेम्पलेट पैरामीटर से एक रन है, जहां अपेक्षित टेम्पलेट तर्क में टेम्पलेट टेम्पलेट तर्क स्वयं होता है। मुझे मानक में कोई संदर्भ नहीं मिल रहा है जो इस पर रोक लगाता है, जैसे कि आप दावों को लिंक करते हैं।
स्रोत
2012-07-05 05:33:01
@ क्रिस ओपी का अर्थ है 4.8 का स्नैपशॉट। मैं थोड़ी देर के लिए एक का उपयोग कर रहा हूँ। – juanchopanza
हाँ, मेरे पास मैकपॉर्ट्स से स्नैपशॉट हैं ... इसलिए, शायद नवीनतम एसवीएन या ऐसा कुछ भी नहीं। – celticminstrel
यह आइडिया पर gcc 4.5 पर भी संकलित करता है http://ideone.com/BUAuw – TemplateRex