27 #ifndef CEREAL_TYPES_VECTOR_HPP_
28 #define CEREAL_TYPES_VECTOR_HPP_
30 #include <cereal/cereal.hpp>
36 template <
class Archive,
class T,
class A>
inline
37 typename std::enable_if<traits::is_output_serializable<BinaryData<T>, Archive>()
38 && std::is_arithmetic<T>::value && !std::is_same<T, bool>::value,
void>::type
39 save( Archive & ar, std::vector<T, A>
const & vector )
41 ar( make_size_tag( vector.size() ) );
42 ar( binary_data( vector.data(), vector.size() *
sizeof(T) ) );
46 template <
class Archive,
class T,
class A>
inline
47 typename std::enable_if<traits::is_input_serializable<BinaryData<T>, Archive>()
48 && std::is_arithmetic<T>::value && !std::is_same<T, bool>::value,
void>::type
49 load( Archive & ar, std::vector<T, A> & vector )
52 ar( make_size_tag( vectorSize ) );
54 vector.resize( vectorSize );
55 ar( binary_data( vector.data(), vectorSize *
sizeof(T) ) );
59 template <
class Archive,
class T,
class A>
inline
60 typename std::enable_if<!traits::is_output_serializable<BinaryData<T>, Archive>()
61 || !std::is_arithmetic<T>::value
62 || std::is_same<T, bool>::value,
void>::type
63 save( Archive & ar, std::vector<T, A>
const & vector )
65 ar( make_size_tag( vector.size() ) );
66 for(
auto it = vector.begin(), end = vector.end(); it != end; ++it )
71 template <
class Archive,
class T,
class A>
inline
72 typename std::enable_if<!traits::is_input_serializable<BinaryData<T>, Archive>()
73 || !std::is_arithmetic<T>::value
74 || std::is_same<T, bool>::value,
void>::type
75 load( Archive & ar, std::vector<T, A> & vector )
78 ar( make_size_tag( size ) );
80 vector.resize( size );
81 for(
auto it = vector.begin(), end = vector.end(); it != end; ++it )
86 #endif // CEREAL_TYPES_VECTOR_HPP_