यह मान्य सी ++ क्यों नहीं है?मैं टेम्पलेट कंटेनर और टेम्पलेट दोनों के साथ एक प्रकार की घोषणा क्यों नहीं कर सकता?
template <typename Container, typename T>
bool
foo (const Container <T> &);
जी ++ मुझे Container is not a template
देता है जो स्पष्ट रूप से नहीं है क्या यह वास्तव में मतलब है।
template <typename Container> template <typename T>
कोशिश कर रहा है या तो काम नहीं करता है, न तो const typename Container <T> &
यह है कि एक एक इंटरफेस है जो दोनों कंटेनर और निहित प्रकार से अधिक सामान्य है परिभाषित करना चाहते हैं मेरे लिए उचित लगता है।
तो,
-
मानकों के मामले में
- , क्यों यह अनुमति नहीं है?
- डिजाइनिंग मानकों के मामले में, इसकी अनुमति क्यों नहीं दी जाएगी, क्या इससे समस्याएं पैदा होंगी?
- क्या सी ++ 14 में एक वर्कअराउंड है, इसके अलावा इटरेटर पर इंटरफेस को आधार देने के अलावा?
आप कंटेनर का उपयोग क्यों नहीं कर सकते और टी से छुटकारा पा सकते हैं? –
यह क्यों काम करना चाहिए? आप 'std :: vector' को पास नहीं कर सकते हैं, आपको 'std :: vector' पास करना होगा। यदि आप ऐसा करते हैं तो आप कंपाइलर को 'std :: vector ' करने के लिए कह रहे हैं जो बकवास है। –
NathanOliver
बात यह है कि आप अपने कंपाइलर को बता रहे हैं कि आपके 2 सामान्य पैरामीटर प्रकार हैं हालांकि कंटेनर एक प्रकार का नहीं है जब तक कि इसे अपना सामान्य पैरामीटर नहीं दिया जाता है। – Loomchild