$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Emily Winch (emily_at_[hidden])
Date: 2002-02-08 12:13:43
Sylvain wrote:
[ my example of choosing between static and dynamic polymorphism
at compile time ]
> I see. But how does the user choose one way or the other ? If
> suddenly a type is no more accessible at compile time (header split,
> etc.), the user has to change his code from static_poly to
> dynamic_poly in all the places instances of the type were beeing
> serialized.
Then the user needs another layer of abstraction, to make sure the
decision is only made in one place.
> I would prefer one of the following scenarii:
> 1- Only the dynamic case is taken into account. After all, if the
> dynamic case works, why bother with the static case ?
I'd like to be able to do something a bit like
typedef typelist<foo, bar, baz, haddock> list_type;
tuple<list_type> t = /* something */;
serialise(t, stream);
// ...
deserialise(t, stream);
and not have to build into my code a bunch of stuff designed for
more heavyweight serialisation than I need. Nevertheless I'd like
to be able to write
std::vector<variant<list_type> > v;
deserialise(v, stream);
in some cases where I need that kind of behaviour.
I'm not suggesting that anyone else necessarily wants to do
this, maybe it's only me :)
> 2- dynamic and static case are handled, but automatically (for
> example, the dynamic mechanism is turned on for a type by the use of
> the macro that registers this type into the factory).
What if I'd like to have static polymorphism for type foo in the common case
where I'm stuffing the data in a file to look at later (versioning isn't a
problem in this case), and dynamic polymorphism for foos when I'm reading
from XML that came over the network?
Emily.