From: "David B. Held" <[EMAIL PROTECTED]> > "Dave Abrahams" <[EMAIL PROTECTED]> wrote in message > 001201c2ce26$533cae40$6501a8c0@penguin">news:001201c2ce26$533cae40$6501a8c0@penguin... > > [...] > > It's clear to me why that could happen. It could be just a simple- > > minded rule to avoid violating the standard requirements, which > > are written so that no two objects of the same type can have the > > same address. The rule would be, "if I applied the EBO on this > > type, add some padding after it in an MI context so that other > > bases of the same type can't end up overlapping with it. It's a > > dumb rule, since it's easy enough to lay out empty bases in the > > single-inheritance case at the beginning of the object, and since > > all types have size > 0, you don't need to do anything other than > > "not optimize" in the MI case. > > So it's actually a pessimization as the result of an optimization? > Ouch.
That's one plausible explanation. > > [...] > > I'm interested in what happens when either of ownership or > > storage are themselves empty. > > Oddly enough, VC++ gets the size right for destructive_copy (4), > but bcc insists the size is 8. In this case, I don't know what's going > on, because optimally_inherit only leaves one base class (which > can be proven by trying to static_cast to the policies), so there > isn't even MI involved. It's just outright EBO failure. > > > And, of course, the independent tests not based on smart_ptr. > > I've done some of these. When I first ran across size problems, > it was the first thing I did. However, the simplicity of the tests does > not give you a good idea of what happens in smart_ptr. That is, a > lot of the simple tests pass with the desired results. It's when > the tests get more and more smart_ptr baggage that you begin > to see different results. It will be a lot more instructive if you can narrow down which specific piece of baggage is causing the problem so that you're not thinking of this in terms of smart_ptr components all the time. Otherwise, you'll never have a good idea of which policy design choices will cause what size-effects. -- Dave Abrahams Boost Consulting http://www.boost-consulting.com _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost