This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: g++ and aliasing bools


> The argument can be extended to handle non-virtual single or multiple
> inheritance: from the C point of view,

This isn't obvious yet.

You have to at least discuss zero-sized base classes and whether or not
GNU C handles them in the same way -- including cases like this:

  struct A {};
  struct B : public A {};
  struct C : public A {};
  struct D : public B, C {};

Here, D has size two to avoid having two A's at the same address.
If C did not derive from A, D would have size one.  In GNU C, does:

  struct A {};
  struct B { struct A __base1; };
  struct C { struct A __base1; };
  struct D {
     struct B __base1;
     struct C __base2;
  };

have size two?

Does the variant where C is empty have size 1?

--
Mark Mitchell                   mark@codesourcery.com
CodeSourcery, LLC               http://www.codesourcery.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]