2012-12-24 18 views
8

मैं जानता हूँ कि C++ हम यह कर सकते हैं कि:मैं अपनी कक्षा के साथ इनलाइन बनाई गई ऑब्जेक्ट में टेम्पलेट तर्क कैसे दे सकता हूं?

class A {} a; 

इस प्रकार Aa नामित की एक वस्तु बना देता है। यह इसके बराबर है:

A a; 

मैं सोच रहा था कि मैं टेम्पलेट्स के साथ ऐसा कैसे करूंगा। उदाहरण के लिए:

template <typename T> struct N {} <int> n; 

यह संकलित नहीं होता है, लेकिन आपको विचार मिलता है। मैं अपनी कक्षा परिभाषा के साथ इनलाइन बनाई गई ऑब्जेक्ट में टेम्पलेट तर्क कैसे निर्दिष्ट करूं? क्या यह भी संभव है?

+0

मैं नहीं वहाँ एक वाक्य रचना है कि आप उस कार्य करने की अनुमति देता है। यद्यपि आप टेम्पलेट विशेषज्ञता और तत्काल ऑब्जेक्ट मूल तरीके से करने में सक्षम हो सकते हैं। – dchhetri

उत्तर

2

सामान के बाद समापन } मानक के अनुसार एक init-declarator-list कहा जाता है:

यह भी कोई त्रुटि है।

14.3 स्पष्ट मनाही उन्हें टेम्पलेट वर्ग घोषणाओं में प्रयोग की जाने वाली:

In a template-declaration, explicit specialization, or explicit instantiation the init-declarator-list in the dec- laration shall contain at most one declarator. When such a declaration is used to declare a class template, no declarator is permitted.

+0

मैंने अभी इस जवाब के आधार पर एक बग की सूचना दी है, क्योंकि यह 'टेम्पलेट <> स्ट्रक्चर ए {} lulz; 'को अस्वीकार करता है। –

1

मुझे नहीं लगता कि आप ऐसा कर सकते हैं। आपके द्वारा वर्णित रूप, संरचनाओं और कक्षाओं के लिए, मेरी समझ से, सी के साथ पिछड़े संगतता के लिए रखा जाता है - जहां आप structs के लिए ऐसा कर सकते हैं।
अच्छा विचार, हालांकि :)

1

आप टेम्पलेट परिभाषा से चर घोषित नहीं कर सकते हैं, भले ही सभी टेम्पलेट तर्क डिफ़ॉल्ट हैं।

template <typename T = int> struct N {} n; 
संबंधित मुद्दे