17
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
。爲什麼強類型枚舉可以用一個沒有static_cast的整數初始化?
預計E e2 = 0;
不好,因爲E
是強類型的。然而,令我感到驚訝的是E e1{ 0 };
應該沒問題。
爲什麼強類型的枚舉可以用一個沒有static_cast
的整數初始化?
根據自C++ 17以來允許的[documentation](http://en.cppreference.com/w/cpp/language/enum) – UnholySheep