c++ टेम्पलेट्स में कीवर्ड 'टाइपनाम' और 'क्लास' का अंतर?



2 Answers

टेम्पलेट पैरामीटर नामकरण के लिए, typename और class बराबर हैं। §14.1.2:

टेम्पलेट-पैरामीटर में कक्षा और टाइपनाम के बीच कोई अर्थपूर्ण अंतर नहीं है।

हालांकि टेम्पलेट का उपयोग करते समय typename को किसी अन्य संदर्भ में संभव है - उस संकलक पर संकेत देने के लिए जिसे आप एक निर्भर प्रकार का जिक्र कर रहे हैं। §14.6.2:

एक टेम्पलेट घोषणा या परिभाषा में उपयोग किया जाने वाला नाम और यह टेम्पलेट-पैरामीटर पर निर्भर है, माना जाता है कि लागू नाम लुकअप को एक प्रकार का नाम नहीं मिलता है या नाम कीवर्ड टाइपनाम द्वारा योग्यता प्राप्त होती है।

उदाहरण:

typename some_template<T>::some_type

typename के बिना कंपाइलर सामान्य रूप से नहीं बता सकता है कि आप किसी प्रकार का जिक्र कर रहे हैं या नहीं।

c++ templates keyword

टेम्पलेट्स के लिए मैंने दोनों घोषणाएं देखी हैं:

template < typename T >
template < class T >

क्या फर्क पड़ता है?

और उन खोजशब्दों का क्या अर्थ है निम्नलिखित उदाहरण में (टेम्पलेट्स के बारे में जर्मन विकिपीडिया लेख से लिया गया)?

template < template < typename, typename > class Container, typename Type >
class Example
{
     Container< Type, std::allocator < Type > > baz;
};



  1. कोई फर्क नहीं
  2. टेम्पलेट प्रकार पैरामीटर Container स्वयं दो प्रकार के पैरामीटर के साथ एक टेम्पलेट है।





Related