मैं किसी अन्य वर्ग के अंदर एक टेम्पलेट वर्ग का विशेषज्ञ बनने की कोशिश कर रहा हूं लेकिन संकलक मुझे नहीं जाने देगा। कोड कक्षा फू के बाहर काम करता है लेकिन अंदर नहीं है और मैं चाहता हूं कि संरचना Bla कक्षा Foo के लिए निजी हो।टेम्पलेट उप-वर्ग का विशेषज्ञ कैसे करें?
class Foo {
template<typename ... Ts> struct Bla;
template<> struct Bla<> { static constexpr int x = 1; };
};
error: explicit specialization in non-namespace scope 'class Foo'
धन्यवाद, यह बिल्कुल समाधान है। –
@ गोस्विनवोनब्रेडरलो नोट करें कि मैंने यहां 'सार्वजनिक' का उपयोग किया है, इसलिए मैं 'Bla :: x' प्रदर्शित कर सकता हूं। हालांकि मुझे लगता है कि आप एक 'मित्र' का उपयोग कर रहे हैं या किसी सदस्य फ़ंक्शन के माध्यम से प्रदर्शित कर रहे हैं, इस मामले में आपको ठीक होना चाहिए। – vsoftco
यह मुझे हालांकि सोचता है। क्या वह कक्षा की गोपनीयता का उल्लंघन करने की अनुमति नहीं देता है? 'कक्षा फू {स्थिर constexpr int y = 1; सार्वजनिक: टेम्पलेट संरचना Bla; }; टेम्पलेट <> संरचना Foo :: Bla <> {स्थिर constexpr int x = y; }; 'Foo :: y निजी है लेकिन Bla का विशेषज्ञता करके Foo के किसी भी उपयोगकर्ता को Bla :: x के माध्यम से इसका उपयोग प्राप्त हो सकता है। –