列挙型の前方宣言(C++0x)

提供: Appmethod Topics
移動先: 案内検索

C++0x 対応機能:インデックス への移動

Appmethod C++ 2009 には列挙型の前方宣言が導入されています。 列挙子のリストを指定しないで列挙型を宣言できます。 このような宣言は定義ではありません。固定のベース型の列挙に対してだけ使用できます。 列挙型は再び宣言できます。省略していた列挙子のリストを指定することもできますが、再宣言は前の宣言と一致する必要があります。 この機能は Appmethod C++ 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: この再宣言は定義である

関連項目