(मैं इस सवाल में Abrahams/Dimov example के ज्ञान संभालने कर रहा हूँ।)समारोह टेम्पलेट विशेषज्ञता और इब्राहीम/दिमोव उदाहरण
मान लें कि एक शीर्ष लेख है कि इस के लिए, आप बदल नहीं सकते हैं की तरह में कुछ 3 पार्टी कोड है:
template<class T> void f(T); // (1) base template 1
template<class T> void f(T *); // (2) base template 2
template<> void f<>(int *); // (3) specialization of (2)
सवाल यह है:
मैं ऊपर के रूप में है घोषणाओं दिया गया हो, यह संभव है मुझे अब इस मामले में जहांके लिए आधार टेम्पलेट 1 विशेषज्ञ के लिए(उदाहरण के लिए)?
या बेस टेम्पलेट 2 की केवल घोषणा ही दर्शाती है कि आधार टेम्पलेट 1 अब विशिष्ट नहीं हो सकता है (कम से कम पॉइंटर्स के लिए)?
भले ही आप कर सकें, क्या वह विशेषज्ञता कॉल करने योग्य होगी? ऐसा लगता है कि बेस टेम्पलेट 2 हमेशा "जीत" करेगा यदि एफ को पॉइंटर के साथ बुलाया जाता है। – Mat
@Mat: वर्तमान अनुवाद इकाई से, जहां तक मैं देख सकता हूं, लेकिन यह किसी अन्य अनुवाद इकाई से कॉल करने योग्य हो सकता है, मुझे लगता है, है ना? अन्य अनुवाद इकाई को मानते हुए # 1 और इसी विशेषज्ञता के गैर-अधिभारित घोषणा है। – Mehrdad
एक टीयू जिसमें आधार टेम्पलेट 2 गुंजाइश नहीं होगा? (यकीन नहीं है कि मैं समझता हूं।) ओडीआर उल्लंघनों से भी सावधान रहें। – Mat