मैं using
निर्देश का उपयोग करने के लिए public
किसी व्युत्पन्न वर्ग की पहुंच घोषणा को आधार में घोषित कुछ आंतरिक वर्ग टेम्पलेट में लाने का प्रयास कर रहा हूं। कोड:एक निजी विरासत आंतरिक टेम्पलेट को एक प्रयोग निर्देश के माध्यम से सार्वजनिक बनाना
template <typename T>
class Base
{
public:
template<typename U>
struct Inner;
};
template<typename T>
class Derived: private Base<T>
{
public:
using typename Base<T>::template Inner; // make it visible
Inner<T>* ptr; // no need for typename here, non-qualified name
};
int main() {}
न तो जी ++ और न ही बजना ++ इस कोड संकलन, दोनों में शिकायत के बारे में
error: expected unqualified-id before 'template'
जहाँ तक मुझे पता है, Inner
एक आश्रित टेम्पलेट का नाम है, इसलिए एक ::template
का उपयोग करना चाहिए जब कि इसके नाम से योग्यता, और typename
इससे पहले, Base<T>::Inner
एक आश्रित प्रकार है। मैंने typename/template
के साथ/बिना सभी संभव संयोजनों का प्रयास किया है, और कोई भी संकलित नहीं है। के public
अनुभाग में Inner
का उपयोग करने का कोई तरीका है?
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#109 –
@ T.C। "- टेम्पलेट 'के साथ लिखा जा सकता है? – Barry
@ बैरी नोट करें कि उस समस्या का मूल उदाहरण सदस्य फ़ंक्शन टेम्पलेट के लिए था। –