Boost logo

Boost Users :

From: Bill Lear (rael_at_[hidden])
Date: 2005-01-21 13:29:37


I am curious why loading a vector of items from an input stream fails
using one method but works using a slightly different method.

Given a load method:

        template <class T>
        T* load(std::istream& in) {
            boost::archive::xml_iarchive ia(in);

            T* t;

            ia & BOOST_SERIALIZATION_NVP(t);

            return t;
        }

and use of it:

        vector<item>* v = load<vector<item> >(std::cin);

I get:

        uncaught exception: stream error

But, when I use this load method:

        template<class T>
        void load(std::istream& in, std::vector<T*>& v) {
            boost::archive::xml_iarchive ia(in);

            ia >> BOOST_SERIALIZATION_NVP(v);
        }

and use it so:

        vector<item> v;

        load(std::cin, v);

it works perfectly.

Is there some reason the first method should fail?

Bill


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net