Given the code below, gcc emits the following error:

error: attempt to take address of bit-field structure member 'MyClass::field1'

This compiles fine with Sun's CC, IBM's xlC, and Comeau. The C++ 2003 standard
mentions in 9.6p2 that a non-const reference can't be bound to a bit field, but
that a const reference can be (although it's actually bound to a temporary
initialized with a copy of the bit field rather than the field itself) so I
expect the below code to work fine.

// Code
class MyClass
{
public:
  MyClass() { field1 = 0; };
  int field1 : 4;
};

int main()
{
  MyClass myClass;

  const int &fieldRef1 = myClass.field1;

  return 0;
}


-- 
           Summary: Can't take a const-ref to a bit field
           Product: gcc
           Version: 4.3.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: gcc-bugzilla at daryl dot haresign dot com


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

Reply via email to