6

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;
}
4

1 に答える 1

5

標準に従って、基VenuedIdcharなる type として typeがあるためv、 char を含める必要があり'P'truev == 'P'を生成する必要があります。

§ 7.2 列挙宣言

各列挙は、他のすべての型とは異なる型を定義します。各列挙には、基になる型もあります。基になる型は、 enum-base を使用して明示的に指定できます。明示的に指定されていない場合、スコープ付き列挙型の基になる型は int です。このような場合、基になる型は固定されていると言われます。num-specifier の右中かっこに続いて、各列挙子はその列挙型を持ちます。

于 2013-10-17T10:24:16.087 に答える