मैं इस तरह के कोड भर में भाग गया है:टेम्पलेट निर्वासन (बनाम निर्वासन टेम्पलेट)
template<class T> extern void f(T a);
ज फ़ाइल में
, और च() कई विशिष्ट टी cpp फ़ाइल में के साथ परिभाषित किया गया है।
मुझे इस वाक्यविन्यास के बारे में कोई स्पष्टीकरण नहीं मिला। मैंने देखा है कि बाहरी टेम्पलेट सी ++ 11 में पेश किया गया था लेकिन उनके पास अलग वाक्यविन्यास प्रतीत होता है ...
क्या कोई विस्तार कर सकता है?
धन्यवाद
@ एड्रियनो - मैं दृढ़ता से असहमत हूं, मेरे प्रश्न –
में अलग बाहरी वाक्यविन्यास नहीं है, यह सिर्फ एक बाहरी फ़ंक्शन टेम्पलेट की घोषणा है, यह कहकर कि आप इस टेम्पलेट को किसी अन्य फ़ाइल में परिभाषित करने जा रहे हैं (जैसे आप सामान्य के साथ करते हैं 'बाहरी' समारोह)। इस छोटे लेख के मुताबिक http://www.parashift.com/c++-faq/separate-template-fn-defn-from-decl.html, अधिकांश कंपाइलर इस तरह की चाल के साथ लिंकर त्रुटि फेंकता है। – Holt
@ होल्ट यह केवल एक लिंकर त्रुटि में परिणाम देगा यदि आप एक अंतर्निहित तत्कालता बनाने का प्रयास करते हैं। ओपी का उल्लेख है कि टेम्पलेट '.cpp' फ़ाइल में कई स्पष्ट तत्काल (या शायद विशेषज्ञता) प्रदान करता है, इसलिए जब तक आप केवल उन्हें कॉल करते हैं, तो आप ठीक हैं। – Angew