5
पर विचार करें निम्नलिखित सी ++ कोड:जी ++ त्रुटि: विशेषज्ञता इन्स्टेन्शियशन (मित्र के रूप में टेम्पलेट वर्ग) के बाद
यह माइक्रोसॉफ्ट के दृश्य C++ कम्पाइलर के साथ काम करता है:
template <class T>
class Singleton {};
class ConcreteSingleton : public Singleton<ConcreteSingleton> {
template <class T>
friend class Singleton;
};
int main() {}
Singleton
एक दोस्त ConcreteSingleton
की होगा। लेकिन, मैं इसे g ++ 4.8.4 के साथ संकलित नहीं कर सकता। त्रुटि है:
error: specialization of ‘Singleton<ConcreteSingleton>’ after instantiation template <class T> friend class Singleton;
क्या इसे ठीक करने का कोई तरीका है?
ओह, ऐसा लगता है [यह gcc bug] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52625)। – sergej
एक्सकोड में ठीक काम करता है (सी ++ 14 के साथ ऐप्पल एलएलवीएम 7.0) –
जी ++ 5.2.0 पर भी संकलित करने में विफल रहता है। क्लैंग में काम करता है। – user2079303