爲什麼不是這個有效的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
,或者一些結構,我會得到這個錯誤,或什麼不是。但就語義,類型安全等而言,這對我來說似乎是完全合法的。我錯過了什麼?
爲什麼?因爲標準如此說。 :) – Zereges
@Zereges:[但...爲什麼?](https://cdn.meme.am/cache/instances/folder489/500x/59809489.jpg) – einpoklum
通常的原因是[有人寫了一個提案] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf),他們提出的建議被接受。 –