Avatar ·

C++ में टेम्पलेट घोषित करते समय: class या typename — क्या अंतर है और किसका उपयोग करना बेहतर है?

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