एक स्थानीय वर्ग टेम्पलेट तर्क नहीं हो सकता है। क्योंकि मानक का कहना है: -
14.3.1 पैरा 2: "एक स्थानीय प्रकार, कोई संबंध के साथ एक प्रकार, एक अनाम प्रकार या एक प्रकार इन प्रकार से किसी से बढ़ एक टेम्पलेट तर्क के रूप में नहीं किया जाएगा एक टेम्पलेट प्रकार पैरामीटर के लिए। "
[Example:
template <class T> class X { /* ... */ };
void f()
{
struct S { /* ... */ };
X<S> x3; // error: local type used as templateargument
X<S*> x4; // error: pointer to local type used as templateargument
}
-end example] [Note: a template type argument may be an incomplete
type (3.9). ]"
एक वर्कअराउंड here c.l.C++ पर सुझाया गया है।
अद्यतन: कुछ चर्चाएं थीं कि स्थानीय वर्गों को टेम्पलेट तर्क के रूप में क्यों संभव नहीं है? C.std.C++ पर लिंक here और here लिंक पर चर्चा करते हैं।
+1 अच्छा सवाल! इसके बारे में कभी नहीं सुना है =) – SadSido
@anon: क्या मुझे पता चलेगा कि आपने किस कंपाइलर का उपयोग किया था? – jasonline
@anon: मैं इसे विज़ुअल सी ++ 2005 में संकलित कर सकता हूं, लेकिन मुझे लगता है कि यह मानक का पालन नहीं करता है अगर इसका वास्तव में उल्लेख किया गया है। मैक्रोज़ पर – jasonline