On Fri, Apr 3, 2009 at 3:02 PM, Robert Ramey
<ramey@rrsd.com>
wrote:
Also, I'm a bit confused about something else Robert.
All along we've been saying that if the code in the translation unit
is not used, it may be stripped by the linker. What code exactly is being
stripped? I mean, I create my classes before I serialize them and I'm
calling member functions on these instances. So for sure the translation
unit is being "entered" before serialization even begins. Does this not
meet the requirements?
I've been presuming your doing something
like:
base * b = new derived;
ar << b;
....
base * new_b;
ar >> new_b; the linker look for the
code to load derived.
Robert
Ramey
What exactly are you trying to say here? Are you saying that only when I
stream in does the translation unit for "derived" get visited? Could you
provide a bit more detail?
What I'm doing is more like this:
base* b = new derived;
b->DoStuff();
b->DoMoreStuff();
**** at this point, the serialization library
doesn't necessary doesn't know anything about derived. (I'm assuming derived
is polymorphic.) Depending on what is compiled into the library and waht
is inline, there may or may not be a problem at link time
Robert Ramey
archive << b;
I haven't actually used >> yet. This is strictly an issue with
streaming out.