diff options
Diffstat (limited to 'boost/serialization/valarray.hpp')
-rw-r--r-- | boost/serialization/valarray.hpp | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/boost/serialization/valarray.hpp b/boost/serialization/valarray.hpp index efe102f6cf..9eece5c173 100644 --- a/boost/serialization/valarray.hpp +++ b/boost/serialization/valarray.hpp @@ -18,10 +18,12 @@ #include <valarray> #include <boost/config.hpp> + +#include <boost/serialization/collections_save_imp.hpp> +#include <boost/serialization/collections_load_imp.hpp> #include <boost/serialization/split_free.hpp> -#include <boost/serialization/array.hpp> #include <boost/serialization/collection_size_type.hpp> -#include <boost/serialization/detail/get_data.hpp> +#include <boost/serialization/array_wrapper.hpp> // function specializations must be defined in the appropriate // namespace - boost::serialization @@ -42,8 +44,13 @@ void save( Archive & ar, const STD::valarray<U> &t, const unsigned int /*file_ve { const collection_size_type count(t.size()); ar << BOOST_SERIALIZATION_NVP(count); - if (t.size()) - ar << make_array(detail::get_data(t), t.size()); + if (t.size()){ + // explict template arguments to pass intel C++ compiler + ar << serialization::make_array<const U, collection_size_type>( + static_cast<const U *>(&t[0]), + count + ); + } } template<class Archive, class U> @@ -52,8 +59,13 @@ void load( Archive & ar, STD::valarray<U> &t, const unsigned int /*file_version collection_size_type count; ar >> BOOST_SERIALIZATION_NVP(count); t.resize(count); - if (t.size()) - ar >> make_array(detail::get_data(t), t.size()); + if (t.size()){ + // explict template arguments to pass intel C++ compiler + ar >> serialization::make_array<U, collection_size_type>( + static_cast<U *>(&t[0]), + count + ); + } } // split non-intrusive serialization function member into separate |