मेरी समस्या का SSCCE में संकलित नहीं है नेस्टेड टेम्पलेट कक्षाएं:साथ सूचक करने वाली विधि बजना ++
template <class T> class MyClass
{
template <void (MyClass::*M)() const> struct wrapper
{
virtual void call();
};
};
template <typename T>
template <void (MyClass<T>::*M)() const>
void MyClass<T>::wrapper<M>::call()
{
}
इस कोड जीसीसी में संकलित लेकिन त्रुटि के साथ विफल:
error: nested name specifier 'MyClass<T>::wrapper<M>::' for declaration does not refer into a class, class template or class template partial specialization
void MyClass<T>::wrapper<M>::call()
~~~~~~~~~~~~~~~~~~~~~~~~~^
बजना में
++। क्यों?
कक्षा कॉल परिभाषा समस्या हल करती है, मुझे पता है। कोई गैर पॉइंटर-टू-विधि टेम्पलेट हर जगह ठीक काम करता है। टेम्पलेट/टाइपनाम के साथ प्रयोगों का कोई परिणाम नहीं है।
ऐसा लगता है कि SO पर कोई भी जवाब नहीं जानता है, तो शायद आप क्लैंग बग सबमिट कर सकते हैं और फिर यदि आपको कोई प्रतिक्रिया मिलती है तो यहां पोस्ट करें। – Brian
@ ब्रायन, ठीक है। https://llvm.org/bugs/show_bug.cgi?id=24357 प्रतीक्षा कर रहा है ... – dyomas
आपके एसएससीसीई में कमांड लाइन स्विच और संस्करण संख्याएं नहीं हैं। – kfsone