为什么这段代码不是有效的 C++ 代码?
enum foo : unsigned { first_foo, second_foo };
enum bar : foo { best_foo = first_foo };
GCC 5.4.0表示:
/tmp/a.cpp:3:16: error: underlying type ‘foo’ of ‘bar’ must be an integral type
enum bar : foo { best_foo = first_foo };
我可以理解如果foo
是一个float
、结构体或其他内容,为什么会出现这个错误。但从语义、类型安全等方面来看,这似乎对我来说是完全合法的。我错过了什么?
enum bar
的变量是否可以转换为类型为enum foo
的变量?反之亦然?这如何与enum class
交互?这如何使std::common_type
更加复杂?这个特性的一个用例是什么? - KevinZ