c++ - Difference between template name and template id -


सी ++ मानक

अनुभाग 14/2:

एक में फ़ंक्शन टेम्पलेट घोषणापत्र, घोषणापत्र-आईडी एक टेम्पलेट-नाम होगा (अर्थात, टेम्पलेट- id नहीं)। [ नोट: एक क्लास टेम्प्लेट घोषणापत्र में, यदि declarator-id एक टेम्पलेट- id है, तो घोषणा क्लास टेम्प्लेट आंशिक विशेषज्ञता घोषित करती है। टेम्पलेट-नाम , टेम्पलेट-आईडी और एक टाइप-आईडी के बीच अंतर क्या है

क्या उपरोक्त उद्धरण का मतलब है कि हम

  टेम्पलेट & lt; & gt; Void templatefunction & lt; int & gt; () {// ...}  

या मैं इस बिंदु को गलत समझा है?

टेम्पलेट का नाम टेम्पलेट-नाम है। आपके उदाहरण में, टेम्पलेट फ़ंक्शन एक टेम्पलेट-नाम है।

टेम्पलेट- id टेम्पलेट का नाम है टेम्पलेट तर्क सूची आपके उदाहरण में, टेम्पलेट फ़ंक्शन & lt; int & gt; है टेम्पलेट- id । एक टेम्पलेट- id एक टेम्पलेट विशेषज्ञता का नाम देता है।

टाइप-आईडी एक प्रकार का नाम है एक टेम्पलेट- id एक टाइप-आईडी है; एक टेम्पलेट-नाम नहीं है (क्योंकि यह किसी प्रकार का नाम नहीं है, यह एक टेम्पलेट का नाम देता है)।

जिस पाठ को आप 14/2 से उद्धृत करते हैं वह घोषणा , जो एक प्राथमिक टेम्पलेट घोषित करता है। आपका उदाहरण टेम्पलेट-घोषणा नहीं है, यह एक स्पष्ट-विशेषज्ञता (14.7.3 / 1) है।


Comments