列挙型の前方宣言(C++0x)
C++11 対応機能:インデックス への移動
C++Builder 2009 には列挙型の前方宣言が導入されています。 列挙子のリストを指定しないで列挙型を宣言できます。 このような宣言は定義ではありません。固定のベース型の列挙に対してだけ使用できます。 列挙型は再び宣言できます。省略していた列挙子のリストを指定することもできますが、再宣言は前の宣言と一致する必要があります。 この機能は C++Builder 2009 に追加された C++0x 機能の 1 つです。
enum E : short; // OK: スコープなし、ベース型は short enum F: // 不正: 列挙型のベースが必要 enum class G : short // OK: スコープあり、ベース型は short enum class H; // OK: スコープあり、ベース型は int enum E : short; // OK: E の再宣言 enum class G : short; // OK: G の再宣言 enum class H; // OK: H の再宣言 enum class H : int; // OK: H の再宣言 enum class E : short; // 不正: 以前にスコープなしで宣言されている enum G : short; // 不正: 以前にスコープありで宣言されている enum E; // 不正: 列挙型のベースが必要 enum E : int // 不正: 異なるベース型 enum class G; // 不正: 異なるベース型 enum class H : short; // 不正: 異なるベース型 enum class H {/* */}] // OK: この再宣言は定義である