http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51242



--- Comment #6 from Jonathan Wakely <redi at gcc dot gnu.org> 2012-11-19 
11:52:38 UTC ---

The check is for an unscoped enumeration type which does seem intentional.



This change allows the example to compile:



--- cp/decl2.c.orig     2012-11-19 11:50:28.842443803 +0000

+++ cp/decl2.c  2012-11-19 11:46:08.445472115 +0000

@@ -1026,7 +1026,7 @@

   if (TREE_CODE (value) == VOID_TYPE)

     return void_type_node;



-  if (!INTEGRAL_OR_UNSCOPED_ENUMERATION_TYPE_P (TREE_TYPE (value))

+  if (!INTEGRAL_OR_ENUMERATION_TYPE_P (TREE_TYPE (value))

       && (POINTER_TYPE_P (value)

           || !dependent_type_p (TREE_TYPE (value))))

     {



It emits a warning though:



e.cc:5:19: warning: 'MyClass::Field1' is too small to hold all values of 'enum

class MyEnum' [enabled by default]

Reply via email to