enum class E
{};
int main()
{
E e1{ 0 }; // ok
E e2 = 0; // not ok
// error : cannot initialize a variable of
// type 'E' with an rvalue of type 'int'
}
Derleyicim -std=c++1z
seçenekli clang 4.0
.Güçlü bir şekilde yazılmış bir enum, static_cast olmadan neden tamsayı ile başlatılabilir?
E
, güçlü bir şekilde yazıldığından, E e2 = 0;
'un iyi olmadığı beklenmektedir. Ancak, beni şaşırtan şey, E e1{ 0 };
'un iyi olması.
Güçlü bir şekilde yazılmış bir enum, neden static_cast
olmadan bir tamsayı ile başlatılabilir? Liste intializers kullanılarak reference bakıldığında
C++ 17'den beri izin verilen [belgeler] 'e (http://en.cppreference.com/w/cpp/language/enum) göre – UnholySheep