いくつかの古いコードのレビューを行っているときに、enum を使用した次の 2 つの奇妙な構造に気付きました (2 つの異なるファイル/クラス/名前空間をここにまとめただけです)。
enum FirstEnum
{
A_CHOICE
,ANOTHER_CHOICE=1
,YET_SOME_OTHER_CHOICE
};
enum SecondEnum
{
FIRST_CHOICE
,SECOND_CHOICE
,THIRD_CHOICE
,DEFAULT_CHOICE=SECOND_CHOICE
};
どちらの構造も間違っていると思います。
最初のものは、選択肢の 1 つに値を割り当てますが、他の選択肢には割り当てません。つまり、新しい選択肢が追加されると、問題が発生する可能性があります。
2 番目のケースでは、2 つの列挙要素が同じ基になる値を持つことになります。
C++ 標準が両方の構造を許可する理由はありますか?
(Visual Studio 2010 を使用)