The following code compiles fine in GCC 4.1. enum E { e }; struct S { E v:5; }; S s; int main() { if (!s.v) return 0; }
In 4.2 (20070307), it gives the following error: test.cpp: In function 'int main()': test02.cpp:6: error: could not convert 's.S::v' to 'bool' test02.cpp:6: error: in arguument to unary ! Jim Wilson has suggested this is a bug due to recent patches to the 4.2 branch. -- Summary: Erroneous bitfield conversions to boolean values Product: gcc Version: 4.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: eric dot lemings at roguewave dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31273