2011-10-16 22 views
12

, üye sınıfları ve üye işlevler için bu bir"Enum sınıfı" üyeleri kullanıldıklarında hemen veya daha sonra başlatıldı mı?

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

düşünün C++ 11 (ve C++ 03) biz onların tanımını gerektiren bir yolla bunları kullanmak sürece kendi tanımını örneklemek olmayacaktır. Bu enum class için doğru mu? C++ 11 kapının hemen dışında ve her şey güvenilir değil henüz, öyle görünüyor çünkü

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

Maalesef ben derleyiciler kontrol edemez.

+0

Sanırım "0 = a;' std :: string "ifadesi dolaylı olarak" int "değerine dönüştürülemezse geçerlidir. Ama sonra tekrar ... – Florian

cevap

10

Sanırım öyle. 14.7.1/1

bir sınıf şablonu uzmanlık örtülü instantiation ancak tanımları veya varsayılan bağımsız değişkenleri, bildirimleri örtülü örnekleme neden olur ve [...] kapsamlı üye numaralandırma

+1

Teşekkürler! Http://llvm.org/bugs/show_bug.cgi?id=10044 ve http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49224 olarak bildirilmiştir. –

İlgili konular