Boost logo

Boost :

From: troy d. straszheim (troy_at_[hidden])
Date: 2005-10-10 00:21:04

On Sun, Oct 09, 2005 at 02:15:44PM -0700, Robert Ramey wrote:
> With this approach you would make one fast_oarchive adaptor class
> and one small and trivial *.hpp file for each archive it is adapted to.


Quick question. The fast_archive example has a function template
save_override() that sends calls that aren't otherwise overridden in
derived_t back to base_t:

template<class Base>
class fast_oarchive_impl :
    public Base

    // fall through to Base for any overrides not specified here
    template<class T>
    void save_override(T & t, BOOST_PFTO int){
        Base::save_override(t, 0);
    // custom specializations
    void save_override(const std::vector<int> & t, int){
        save_binary(t, sizeof(int) * t.size());


And I've done this for a few archive types. Works fine. The
portable_binary_archive example, does the same thing, except it does
so for save(), like this:

class portable_binary_oarchive :
    public boost::archive::binary_oarchive_impl<portable_binary_oarchive>
    typedef portable_binary_oarchive derived_t;
    typedef boost::archive::binary_oarchive_impl<portable_binary_oarchive>

    // default fall through for any types not specified here
    template<class T>
    void save(const T & t){
    void save(const unsigned int t){

Which I've also used. AFAICT, I could do what I've needed to do so
far either way. What's the difference? Apologies in advance if I've
missed something in the docs.


Boost list run by bdawes at, gregod at, cpdaniel at, john at