On Wed, 2005-05-11 at 15:30 -0700, Mark Mitchell wrote:
Given the following:
struct A { B& b1; B& b2; const B& b3;
A(B& b): b1(b),b2(b),b3(b) { } };
Is the compiler allowed to suppress b2 and/or b3 from the layout of the object. The next question comes when b1,b2 and b3 are in various places in an inheritance path, would it be allowed to only keep the first reference in this path (provided of course that it can be proved that all references are bound to the same object).
Tricky! Because you can't get the address of the reference, or form a pointer-to-member, it might be valid to do the optimization you suggest. Then again, there might be something lurking that I'm not thinking of.
In any case, nobody does that optimization, and it would break the ABI.
-- Mark Mitchell CodeSourcery, LLC [EMAIL PROTECTED] (916) 791-8304