तो मेरे पास है:मैं टेम्पलेट क्लास के स्थिर सदस्यों को कैसे कॉल करूं?
template <class T>
class A
{
static void f()
{
// not using template parameter T
}
};
इस मामले A<int>::f()
में A<double>::f()
रूप में ही है, लेकिन मैं टेम्पलेट पैरामीटर के माध्यम से A::f()
फोन नहीं करना चाहती। क्या कोई वाक्यविन्यास है जो f()
पर कॉल करने की अनुमति देता है लेकिन टेम्पलेट पैरामीटर की आवश्यकता नहीं है?
साफ कामकाज के लिए +1। हालांकि संकलक को यह पता करने में सक्षम होना चाहिए कि क्या यह पैरामीटर टी का उपयोग करता है - यदि कोड में पहचानकर्ता टी के कोई उदाहरण नहीं हैं तो निश्चित रूप से इसका उपयोग नहीं किया जा रहा है। –
@ बिली: लेकिन यदि कक्षा सार्वजनिक पुस्तकालय का हिस्सा है, तो 'टी' पैरामीटर का उपयोग शुरू करने से एबीआई-ब्रेकिंग परिवर्तन होगा, क्योंकि 'ए :: एफ()' अब मान्य नहीं होगा। कार्यों में सामग्री का परिचय * कभी नहीं, कभी * एबीआई तोड़ना चाहिए, केवल फ़ंक्शन परिभाषा में परिवर्तन होना चाहिए। – cdhowie
@ बिली ओनेल: हाँ, सिवाय जब 'एफ()' कुछ 'ए :: जी() 'को कॉल करता है जो' टी' पर निर्भर करता है। हालांकि, सामान्य नियम यह है कि किसी पहचानकर्ता के उपयोग के संबंध में कुछ भी इसकी घोषणा पर निर्भर होना चाहिए, भाषा 'f ()' 'f()' के साथ समान नहीं है, भले ही 'टी' शरीर में उपयोग नहीं किया जाता है 'एफ ' '। वर्ग संरचना के लिए –
jpalecek