gcc-4.5 では 0 を出力し、gcc-4.6 では 1 を出力します。
#include <iostream>
enum VenueId: char {};
int
main (int argc, char ** argv)
{
VenueId v = (VenueId)'P';
std::cout << (v=='P') << std::endl;
return 0;
}
標準に従って、基VenuedId
にchar
なる type として typeがあるためv
、 char を含める必要があり'P'
、truev == 'P'
を生成する必要があります。
§ 7.2 列挙宣言
各列挙は、他のすべての型とは異なる型を定義します。各列挙には、基になる型もあります。基になる型は、 enum-base を使用して明示的に指定できます。明示的に指定されていない場合、スコープ付き列挙型の基になる型は int です。このような場合、基になる型は固定されていると言われます。num-specifier の右中かっこに続いて、各列挙子はその列挙型を持ちます。