diff options
Diffstat (limited to 'boost/serialization/list.hpp')
-rw-r--r-- | boost/serialization/list.hpp | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/boost/serialization/list.hpp b/boost/serialization/list.hpp index b745d8769d..741dbbe73e 100644 --- a/boost/serialization/list.hpp +++ b/boost/serialization/list.hpp @@ -21,6 +21,7 @@ #include <boost/config.hpp> #include <boost/serialization/collections_save_imp.hpp> +#include <boost/serialization/collections_load_imp.hpp> #include <boost/archive/detail/basic_iarchive.hpp> #include <boost/serialization/access.hpp> @@ -29,7 +30,6 @@ #include <boost/serialization/item_version_type.hpp> #include <boost/serialization/split_free.hpp> #include <boost/serialization/detail/stack_constructor.hpp> -#include <boost/serialization/detail/is_default_constructible.hpp> namespace boost { namespace serialization { @@ -62,23 +62,7 @@ inline void load( if(boost::archive::library_version_type(3) < library_version){ ar >> BOOST_SERIALIZATION_NVP(item_version); } - if(detail::is_default_constructible<U>()){ - t.resize(count); - typename std::list<U, Allocator>::iterator hint; - hint = t.begin(); - while(count-- > 0){ - ar >> boost::serialization::make_nvp("item", *hint++); - } - } - else{ - t.clear(); - while(count-- > 0){ - detail::stack_construct<Archive, U> u(ar, item_version); - ar >> boost::serialization::make_nvp("item", u.reference()); - t.push_back(u.reference()); - ar.reset_object_address(& t.back() , & u.reference()); - } - } + stl::collection_load_impl(ar, t, count, item_version); } // split non-intrusive serialization function member into separate |