25 #ifndef GRIDCONTAINER_SERIALIZATION_TUPLE_H
26 #define GRIDCONTAINER_SERIALIZATION_TUPLE_H
28 #include <boost/serialization/split_free.hpp>
31 #include <type_traits>
34 namespace serialization {
44 template <
typename Archive,
typename... Args>
48 ar << std::get<
N - 1>(t);
55 template <
typename Archive,
typename... Args>
72 template <
typename Archive,
typename... Args>
86 template <
typename Archive,
typename... Args>
90 ar >> std::get<
N - 1>(t);
98 template <
typename Archive,
typename... Args>
107 std::get<
N - 1>(t) = *deleter;
117 template <
typename Archive,
typename... Args>
123 template <
typename Archive,
typename... Args>
125 Save<
sizeof...(Args)>::
save(ar, t, version);
130 template <
typename Archive,
typename... Args>
132 Load<
sizeof...(Args)>::
load(ar, t, version);
137 template <
typename Archive,
typename... Args>
139 split_free(ar, t, version);
static void load(Archive &ar, std::tuple< Args...> &t, const unsigned int version, typename std::enable_if<!std::is_default_constructible< typename std::tuple_element< N-1, std::tuple< Args...>>::type >::value >::type *=0)
void load(Archive &ar, Euclid::GridContainer::VectorValueProxy< T > &value_proxy, const unsigned int)
static void save(Archive &ar, const std::tuple< Args...> &t, const unsigned int version, typename std::enable_if<!std::is_default_constructible< typename std::tuple_element< N-1, std::tuple< Args...>>::type >::value >::type *=0)
void serialize(Archive &archive, std::array< CellType, ND > &array, const unsigned int)
static void load(Archive &, std::tuple< Args...> &, const unsigned int)
This method does nothing. It exists to break the recursion.
static void load(Archive &ar, std::tuple< Args...> &t, const unsigned int version, typename std::enable_if< std::is_default_constructible< typename std::tuple_element< N-1, std::tuple< Args...>>::type >::value >::type *=0)
static void save(Archive &ar, const std::tuple< Args...> &t, const unsigned int version, typename std::enable_if< std::is_default_constructible< typename std::tuple_element< N-1, std::tuple< Args...>>::type >::value >::type *=0)
void save(Archive &ar, const Euclid::GridContainer::VectorValueProxy< T > &value_proxy, const unsigned int)
static void save(Archive &, const std::tuple< Args...> &, const unsigned int)
This method does nothing. It exists to break the recursion.