-3
讓我們考慮下面的代碼:爲什麼不允許從強類型枚舉到其基礎類型的隱式轉換?
#include <type_traits>
enum class foo_bar : unsigned
{
foo,
bar,
};
int main()
{
foo_bar bar = foo_bar::bar;
// unsigned a = bar; -- error: cannot convert ‘foo_bar’ to ‘unsigned int’ in initialization
unsigned a = static_cast<std::underlying_type<foo_bar>::type>(bar);
return 0;
}
爲什麼隱式轉換是不允許的?基礎類型是已知的,類型a
匹配foo_bar
基礎類型。隱式轉換似乎是安全的,可以在不丟失信息的情況下執行。爲什麼從語言設計的角度來看演員是必要的?
因爲這就是整個觀點? – Xeo
> strong typed>隱式轉換 –
@Xeo:來留下相同的評論,你毆打我,它噢:) –