मुझे सी ++ मानक लाइब्रेरी में टेम्पलेट टेम्पलेट पैरामीटर लेने के लिए निर्दिष्ट किसी भी टेम्पलेट से अवगत नहीं है, लेकिन सी ++ 11 में कम से कम एक मानक टेम्पलेट है जिसमें आंशिक विशेषज्ञता टेम्पलेट के साथ है टेम्पलेट पैरामीटर: std::pointer_traits
। std::pointer_traits<Ptr>::element_type
को निर्दिष्ट किया गया है:
Ptr::element_type
यदि ऐसा कोई प्रकार मौजूद है; अन्यथा, T
यदि Ptr
फॉर्म SomePointer<T, Args>
का एक वर्ग टेम्पलेट इंस्टेंटेशन है, जहां Args
शून्य या अधिक प्रकार के तर्क हैं; अन्यथा, विशेषज्ञता खराब गठित है।
आदेश में इस लागू करने के लिए आप SomePointer
के लिए एक टेम्पलेट टेम्पलेट पैरामीटर की जरूरत है, क्योंकि यह एक मनमाना वर्ग टेम्पलेट हो सकता है (जब तक यह केवल है के रूप में, टेम्प्लेट पैरामीटर टाइप सटीक होना करने के लिए)। यहां libstdC++ सहायक वर्ग आंशिक विशेषज्ञता है जो यह करता है, उदाहरण के लिए:
template<template<typename, typename...> class _SomePtr, typename _Tp,
typename... _Args>
struct __ptrtr_elt_type<_SomePtr<_Tp, _Args...>, false>
{
typedef _Tp __type;
};
कंटेनरों के कुछ टेम्पलेट टेम्पलेट कन्स्ट्रक्टर हैं। – GingerPlusPlus
@ जिंजरप्लसप्लस: एक कन्स्ट्रक्टर टेम्पलेट टेम्पलेट टेम्पलेट पैरामीटर नहीं है। –
मुझे लगता है कि एसटीएल में टेम्पलेट टेम्पलेट पैरामीटर टेम्पलेट्स नहीं हैं। क्योंकि यह 'कंटेनर <-> इटरेटर्स <-> एल्गोरिदम' के दर्शन को तोड़ देगा। – 101010