インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

enum ビット・フィールドの符号の有無

インテル® C++ コンパイラーと Microsoft® Visual C++® コンパイラーでは、enum 型で宣言されたビット・フィールドの符号の有無の判定方式が異なります。 Microsoft® Visual C++® は、enum 型の値の一部がそのビット・フィールドで表現できない場合であっても、常に enum ビット・フィールドを符号付きとみなします。

反対に、インテル® C++ コンパイラーは、enum 型が少なくとも 1 つの負の値の enum 定数を含む場合を除いて、enum ビット・フィールドを符号なしとみなします。 enum 型の値をすべて表現するには少なすぎるビット数でこのビット・フィールドを宣言している場合は、必ずインテル® C++ コンパイラーから警告メッセージが生成されます。