Avatar ·

C++ में टेम्पलेट पैरामीटर घोषित करते समय typename और class में क्या अंतर है?

नमस्ते! मैं एक शुरुआती C++ डेवलपर हूँ और टेम्पलेट्स को समझने की कोशिश कर रहा हूँ। मैंने देखा है कि टेम्पलेट पैरामीटर घोषित करते समय `typename` और `class` दोनों कीवर्ड का उपयोग किया जा सकता है। उदाहरण के लिए:\n\n```cpp\ntemplate \nvoid foo(T t) { }\n\ntemplate \nvoid bar(T t) { }\n```\n\nदोनों विकल्प कंपाइल होते हैं और समान रूप से काम करते हैं। यह मुझे भ्रमित करता है। एक ही उद्देश्य के लिए दो अलग-अलग कीवर्ड क्यों चाहिए? क्या इनमें कोई अंतर है? मैंने सुना है कि कुछ संदर्भों में, जैसे नेस्टेड डिपेंडेंट टाइप्स के साथ काम करते समय, `typename` अनिवार्य है और `class` काम नहीं करता। क्या यह सच है? या यह सिर्फ एक ऐतिहासिक अवशेष है? कृपया विस्तार से समझाएँ ताकि मैं अंततः समझ सकूँ कि कब क्या उपयोग करना है। कोड उदाहरणों का स्वागत है। पहले से धन्यवाद!