क्यों है कि मामला गलत (यह तार्किक)typedef और टेम्पलेट पैरामीटर
template <typename T>
struct Der: public Base
{
typedef int T;
T val;
};
है, लेकिन स्थिति सही है?
struct Base
{
typedef int T;
};
template <typename T>
struct Der: public Base
{
T val;
};
स्टैंडर्ड 14.6.1/7 का कहना है:
एक वर्ग टेम्पलेट की परिभाषा में या इस तरह के एक टेम्पलेट के एक सदस्य टेम्पलेट परिभाषा के बाहर प्रतीत होता है कि की परिभाषा में, प्रत्येक के लिए आधार वर्ग है जो एक टेम्पलेट पैरामीटर (14.6.2) पर निर्भर नहीं करता, अगर आधार वर्ग या आधार वर्ग के एक सदस्य के नाम के नाम पर एक टेम्पलेट पैरामीटर का नाम, आधार वर्ग नाम के समान है या सदस्य नाम टेम्पलेट पैरामीटर नाम (3.3.7) छुपाता है।
यह यहां अस्पष्ट क्यों नहीं है?
आपके उत्तर के लिए धन्यवाद, लेकिन ऐसे व्यवहार के कारण क्या हैं? – user3514538
@ user3514538 टेम्पलेट-पैरामीटर को फिर से शुरू करने से शायद [basic.scope.class]/1 - एक महत्वपूर्ण अनुच्छेद के साथ समस्याएं हो सकती हैं। ओडीआर का उल्लेख नहीं है। हालांकि, दूसरी बिट के बारे में, मुझे यकीन नहीं है। हमें एचवीडी के लिए इंतजार करना चाहिए: ओ) – Columbo
यह [सीडब्ल्यूजी 591] (http://open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#591) का विषय प्रतीत होता है, हालांकि यह केवल इसे प्रतिबंधित करता है गैर-निर्भर आधार वर्गों पर शासन करें। – dyp