$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: John Maddock (John_Maddock_at_[hidden])
Date: 2000-04-28 06:54:49
Dave,
>Too bad about the object size bloat. I'm _fairly_ certain that the empty
base class optimization allows the extra size to be removed, but as we all
know not every compiler implements every optimization ;(
<
Too true, however it's harder in this case, consider:
struct D : public B1, public B2
{
};
given:
D d;
can the expression:
(void*)(B1*)(&d) == (void*)(B2)(&d)
ever be true?
If B1 and B2 share a common non-virtual base class then this must not be
true and the base classes (probably) can't be zero sized [10.5p10 and
5.10], but what happens if they don't share a common ancestor? Probably
they can be zero sized, but I don't know of any compilers that implement
this, it would be interesting to have some compiler implementor's
perspective on this....
- John