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'
}
제 컴파일러는 -std=c++1z
인 clang 4.0
입니다.강력한 형식의 열거 형을 static_cast없이 정수로 초기화 할 수있는 이유는 무엇입니까?
E
은 강력한 형식이기 때문에 E e2 = 0;
이 좋지 않을 것으로 예상됩니다. 그러나 놀란 것은 E e1{ 0 };
이 좋습니다.
왜 강력한 형식의 열거 형을 static_cast
없이 정수로 초기화 할 수 있습니까? 리스트 intializers를 사용 reference 찾고
[documentation] (http://en.cppreference.com/w/cpp/language/enum)에 따르면 C++ 17 이후 허용됩니다. – UnholySheep