プログラムは次のようになります:
enum E : int
{
A, B, C
};
g++ -c test.cpp
正常に動作します。ただし、clang++ -c test.cpp
次のエラーが発生します。
test.cpp:1:6: error: ISO C++ forbids forward references to 'enum' types
enum E : int
^
test.cpp:1:8: error: expected unqualified-id
enum E : int
^
2 errors generated.
これらのエラー メッセージは私には意味がわかりません。ここには前方参照がありません。
ベストアンサー1
列挙型の基になる型を指定するのは、C++11 言語の機能です。コードをコンパイルするには、スイッチを追加する必要があります-std=c++11
。これは、GCC と Clang の両方で機能します。
C++03 の列挙型の場合、列挙子の値が int または unsigned int に収まらない場合を除き、基礎となる整数型は実装定義です。(ただし、Microsoft のコンパイラでは、VS 2005 以降、列挙型の基になる型を独自の拡張機能として指定できるようになりました。)