summaryrefslogtreecommitdiff
path: root/boost/serialization/valarray.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/serialization/valarray.hpp')
-rw-r--r--boost/serialization/valarray.hpp24
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