मैं प्रत्येक विशिष्ट इकाई में तत्काल होने से रोकने के लिए एक विशिष्ट टेम्पलेटेड कक्षा के लिए सभी अंतर्निहित टेम्पलेट इंस्टॉलेशन को रोकना चाहता हूं।मैं एक विशिष्ट टेम्पलेट के लिए निहित टेम्पलेट इंस्टॉलेशन को कैसे रोकूं?
ऐसा लगता है कि मेरी विकल्प हैं: जीसीसी के कमांड लाइन पर
- उपयोग -fno-निहित-टेम्पलेट्स। यह सभी अंतर्निहित टेम्पलेट इंस्टॉलेशन को दबा देता है, और जो मैं चाहता हूं वह नहीं है। मैं केवल इसे एक ही टेम्पलेट के लिए रोकना चाहता हूं।
- सी ++ 11 "बाहरी टेम्पलेट" का उपयोग करें। लेकिन यह केवल विशिष्ट स्पष्ट तत्कालताओं को दबाता है। मैं प्रत्येक संभावित टेम्पलेट पैरामीटर सूची के लिए "बाहरी टेम्पलेट" लाइन टाइप करना नहीं चाहता हूं, यह टेम्पलेट तत्काल हो सकता है।
तो मुझे बीच में कुछ चाहिए। यह अच्छा होगा:
extern template class Foo; // suppress all implicit instantiations of Foo
(टेम्पलेट पैरामीटर की कमी पर ध्यान दें।) कोई विचार?
उपयोग का मामला क्या है? क्या आप कुछ तत्कालताओं का उपयोग करने से रोकने की कोशिश कर रहे हैं, या बस कुछ ऑब्जेक्ट फ़ाइल स्थान को सहेजने और समय जोड़ने की कोशिश कर रहे हैं? – user657267
मैं संकलन समय बचाने की कोशिश कर रहा हूं। यह इस मामले में एक बड़ा अंतर बनाता है। और यद्यपि मैं अलग-अलग तात्कालिकताओं को खोजने के लिए कभी-कभी अलग-अलग हिस्सों को ढूंढने के लिए अलग-अलग हिस्सों को जोड़ सकता हूं, मैं लिंकर को किसी भी नए नए निहित तत्कालताओं पर बस त्रुटि देता हूं ताकि उन्हें तुरंत स्पष्ट सूची में जोड़ा जा सके। व्यक्ति द्वारा तत्काल संशोधन जो कारक संशोधन कर रहा है। –
आप एक हेडर और स्रोत फ़ाइल के बीच टेम्पलेट परिभाषा को विभाजित कर सकते हैं जैसे कि आप एक गैर-टेम्पलेट करेंगे। फिर, जब तक आप स्रोत फ़ाइल में अनुमत प्रकारों के सेट के लिए टेम्पलेट को तत्काल प्रारंभ नहीं करते हैं, तो लिंकिंग विफल हो जाएगी। – Praetorian