Boost logo

Boost :

From: Robert Ramey (ramey_at_[hidden])
Date: 2002-11-23 17:00:26


Date: Fri, 22 Nov 2002 16:28:34 -0500
From: "Rozental, Gennadiy" <gennadiy.rozental_at_[hidden]>

> > > The only solution which comes to my mind is additional virtual
> > > functions for writing blocks of primitive types, which default to
> > > just calling the operator<< (>>) n times, but can be overridden
> > > by optimized functions for those archive types where optimized
> > > writes (load) are possible. Nothing else would need to be changed.
> > > What is objectionable in that approach?
> >
> > Well, it is a lot of new virtual functions - one per type,
> > almost doubling
> > the size of the archive interface. Is it worth it?

> No need for extra virtual functions. Using metaprogramming machinery you
> could easily construct classes that either have

> virtual void foo( int ) = 0;

> or

> void foo( int ) {...}

> Depends on template parameter.

> Gennadiy.

Could you please expand upon this? If serialization of fundamental type is invoked
through a base class member virtual functions are suggesting that this
base class be built differently on a regular basis? Wouldn't this preclude
leaving serialization code in a precompiled library? Even if generated automatically
it would still be a lot of virtual functions and double the size of the iterface.

What am I missing here?

Robert Ramey


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk