निम्नलिखित वर्ग पर विचार करें:निर्भर गैर प्रकार खाका पैरामीटर
class Foo
{
enum Flags {Bar, Baz, Bax};
template<Flags, class = void> struct Internal;
template<class unused> struct Internal<Bar, unused> {/* ... */};
template<class unused> struct Internal<Baz, unused> {/* ... */};
template<class unused> struct Internal<Bax, unused> {/* ... */};
};
compiles और कार्यों जब कुलपति ++ 2010 और Comeau सी ++ पर परीक्षण की उम्मीद के रूप में ऊपर वर्ग रूपरेखा। हालांकि, जब Foo
एक टेम्पलेट में ही किया जाता है, कुलपति ++ 2010
उदाहरण के लिए, निम्नलिखित स्निपेट के तहत ऊपर टुकड़ा टूट जाता है:
template<class> class Foo
{
// Same contents as the original non-templated Foo.
};
पैदावार निम्नलिखित error class:
C2754: 'Foo<<unnamed-symbol>>::Internal<Bar,unused>' : a partial specialization cannot have a dependent non-type template parameter
C2754: 'Foo<<unnamed-symbol>>::Internal<Baz,unused>' : a partial specialization cannot have a dependent non-type template parameter
C2754: 'Foo<<unnamed-symbol>>::Internal<Bax,unused>' : a partial specialization cannot have a dependent non-type template parameter
- क्या कोई समझा सकता है कि सादे अंग्रेजी में क्या हो रहा है?
- मैं इसे कैसे ठीक कर सकता हूं (यानी, वीसी ++ 2010 पर एक टेम्पलेट
Foo
में आंतरिक छद्म-स्पष्ट विशेषज्ञता रखें?
मैं कहूंगा कि त्रुटि संदेश फर्जी है। FWIW, Comau कोड स्वीकार करता है भले ही 'Foo' एक टेम्पलेट है। मेरा सुझाव है कि आप एमएस के न्यूज़ ग्रुप में से किसी एक में आज़माएं। एमएस कंपाइलर लोग वहां लटकते थे। – sbi