2011-10-16 15 views
12

, यह एकक्या "एनम क्लास" सदस्य तत्काल या बाद में तत्काल तत्काल होते हैं?

template<typename T> 
struct A { 
    enum class X { 
    V = T() 
    }; 
}; 

सदस्य वर्गों और सदस्य कार्यों के लिए विचार करें सी ++ 11 (और सी ++ 03) जब तक कि हम उन्हें एक तरीका है कि उनकी परिभाषा की आवश्यकता है में उपयोग उनकी परिभाषा का दृष्टांत नहीं होंगे। क्या यह enum class के लिए सच है?

// valid? 
A<std::string> a; 

दुर्भाग्य से, मैं compilers जांच नहीं कर सकता, क्योंकि सी ++ 11 बस दरवाजे से बाहर है और सब कुछ विश्वसनीय नहीं है अभी तक, ऐसा लगता है।

+0

मुझे नहीं लगता कि 'ए ए;' मान्य है जब तक कि 'std :: string' को निश्चित रूप से' int' में परिवर्तित नहीं किया जा सकता है। लेकिन फिर फिर ... – Florian

उत्तर

10

मुझे ऐसा लगता है। 14.7.1/1

एक वर्ग टेम्पलेट विशेषज्ञता के अंतर्निहित इन्स्टेन्शियशन घोषणाओं के अंतर्निहित इन्स्टेन्शियशन का कारण बनता है, लेकिन परिभाषाओं या डिफ़ॉल्ट तर्कों की नहीं, की [...] स्कोप सदस्य enumerations

+1

धन्यवाद! Http://llvm.org/bugs/show_bug.cgi?id=10044 और http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49224 के रूप में रिपोर्ट किया गया। –

संबंधित मुद्दे