Empty class passing details

Mark Mitchell mark at codesourcery.com
Mon Nov 13 20:06:17 UTC 2000


>>>>> "Mark" == Mark Mitchell <mark at codesourcery.com> writes:

    Mark> We should also say what to do with return values.  And, I
    Mark> think in the spirit of easy reading, we should say:

    Mark>   as thought it were a struct containing a single char,
    Mark> i.e., `struct S { char c; };'

Will wonders never cease...

David Gross points out that an empty class can have size greater than
one.  (Conflicts from base classes that can't go at the same
address...)

I bet I have made this assumption in code in a few places, and I bet
it's implied several places in the draft ABI, too.

There are two ways to fix this:

  - Change the definition of empty class to say a class that has 
    no data members, etc., and has size one.

  - Make a pass through everything fixing it up.

This case is sufficiently pathological (empty classes with multiple
inheritance, eventually from the same base class) that nobody will
mind a bit if we choose the first option, so that's the one I would
favor.

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




More information about the cxx-abi-dev mailing list