c++ - Dependent Non-Type Template Parameters -


निम्नलिखित वर्ग पर विचार करें:

  वर्ग फ़ू {enum फ्लैग्स {बार, बाज़, बैक्स }; टेम्पलेट & lt; ध्वज, वर्ग = शून्य & gt; संरचना आंतरिक; टेम्पलेट & lt; वर्ग अप्रयुक्त & gt; संरचना आंतरिक & lt; बार, अप्रयुक्त & gt; {/ * ... * /}; टेम्पलेट & lt; वर्ग अप्रयुक्त & gt; संरचना आंतरिक & lt; बाज़, अप्रयुक्त & gt; {/ * ... * /}; टेम्पलेट & lt; वर्ग अप्रयुक्त & gt; संरचना आंतरिक & lt; बाक्स, अप्रयुक्त & gt; {/ * ... * /}; };  

संकलन और कार्य के ऊपर की कक्षा की रूपरेखा जो अपेक्षित होता है जब वीसी ++ 2010 और कमौ सी ++ पर परीक्षण किया जाता है। हालांकि, जब Foo को एक टेम्पलेट में बना दिया जाता है, तो वीसी ++ 2010 के तहत ऊपर स्निपेट ब्रेक्स होता है। उदाहरण के लिए, निम्नलिखित स्निपेट:

  टेम्पलेट के & lt; वर्ग & gt; क्लास फ़ू {// समान सामग्री मूल गैर-templated Foo के रूप में };  

निम्नलिखित उपज:

  C2754: 'फू & lt; & lt; अनाम-प्रतीक & gt; & gt; :: आंतरिक & lt; बार, अप्रयुक्त & gt; : आंशिक विशेषज्ञता पर निर्भर नॉन-टाइप टेम्प्लेट पैरामीटर C2754 नहीं हो सकता है: 'फू & लेफ्टिनेंट; & lt; अनाम-प्रतीक & gt; & gt; :: आंतरिक & lt; बाज़, अप्रयुक्त & gt; : आंशिक विशेषज्ञता पर निर्भर नॉन-टाइप टेम्पलेट पैरामीटर C2754 नहीं हो सकता है: 'फू & लेफ्टिनेंट; & lt; अनाम-प्रतीक & gt; & gt; :: आंतरिक & lt; बाक्स, अप्रयुक्त & gt;  

  1. क्या कोई समझा सकता है कि यहां क्या सादे अंग्रेजी में चल रहा है?
  2. कैसे एक आंशिक विशेषज्ञता पर निर्भर नॉन-टाइप टेम्पलेट पैरामीटर नहीं हो सकता है? क्या मैं इसे ठीक कर सकता / सकती हूं (यानी, वीसी ++ 2010 पर टेम्पलेटेड Foo में आंतरिक छद्म स्पष्ट विशेषज्ञों को रखना)?

एक विशिष्ट गैर-प्रकार तर्क के अनुरूप एक टेम्पलेट पैरामीटर का प्रकार एक पर निर्भर नहीं होगा विशिष्टता का पैरामीटर।

तो भले ही नाम फ्लैग किसी भी तरह निर्भर हो, यह तब तक बुरा नहीं बनता जब तक कि ये नहीं करता आपके "त्रुटि वर्ग" लिंक के उदाहरण में विशेषज्ञता के एक पैरामीटर पर निर्भर करते हैं


Comments