2014-08-28 13 views
7

सी ++ मानक पुस्तकालय में कौन से टेम्पलेट्स (यदि कोई हैं) में एक या अधिक टेम्पलेट टेम्पलेट पैरामीटर हैं?सी ++ मानक पुस्तकालय में टेम्पलेट टेम्पलेट पैरामीटर्स?

यदि बहुत से हैं, तो कुछ उदाहरण ठीक हैं।

यदि सी ++ संस्करण मायने रखता है, तो सी ++ 14/सी ++ 1y का नवीनतम ड्राफ्ट preffered है।

+0

कंटेनरों के कुछ टेम्पलेट टेम्पलेट कन्स्ट्रक्टर हैं। – GingerPlusPlus

+7

@ जिंजरप्लसप्लस: एक कन्स्ट्रक्टर टेम्पलेट टेम्पलेट टेम्पलेट पैरामीटर नहीं है। –

+0

मुझे लगता है कि एसटीएल में टेम्पलेट टेम्पलेट पैरामीटर टेम्पलेट्स नहीं हैं। क्योंकि यह 'कंटेनर <-> इटरेटर्स <-> एल्गोरिदम' के दर्शन को तोड़ देगा। – 101010

उत्तर

7

मुझे सी ++ मानक लाइब्रेरी में टेम्पलेट टेम्पलेट पैरामीटर लेने के लिए निर्दिष्ट किसी भी टेम्पलेट से अवगत नहीं है, लेकिन सी ++ 11 में कम से कम एक मानक टेम्पलेट है जिसमें आंशिक विशेषज्ञता टेम्पलेट के साथ है टेम्पलेट पैरामीटर: std::pointer_traitsstd::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; 
    }; 
+3

एक कार्यान्वयन को कड़ाई से बोलने से वर्णित व्यवहार के अनुरूप होना चाहिए, जो इस मामले में स्पष्ट रूप से आंशिक विशेषज्ञता का उल्लेख नहीं करता है। वे ऐसा कुछ भी कर सकते हैं ताकि वे उदा। जादूगर करने के लिए चयन करें। किसी भी मामले में, उपयोगकर्ता को यह पता लगाने की अनुमति नहीं है कि ऐसी विशेषज्ञता मौजूद है या नहीं। –

संबंधित मुद्दे