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'
}
Мой компилятор clang 4.0
с опцией -std=c++1z
.
Ожидается, что E e2 = 0;
не работает, потому что E
строго типизирован. Однако меня удивило, что E e1{ 0 };
должно быть в порядке.
Почему синтаксическое перечисление может быть инициализировано целым числом без static_cast
?