25 #ifndef GRIDCONTAINER_SERIALIZATION_TUPLE_H
26 #define GRIDCONTAINER_SERIALIZATION_TUPLE_H
29 #include <type_traits>
31 #include <boost/serialization/split_free.hpp>
34 namespace serialization {
44 template<
typename Archive,
typename... Args>
47 ar << std::get<
N-1>(t);
54 template<
typename Archive,
typename... Args>
70 template<
typename Archive,
typename... Args>
84 template<
typename Archive,
typename... Args>
87 ar >> std::get<
N-1>(t);
95 template<
typename Archive,
typename... Args>
103 std::get<
N-1>(t) = *deleter;
113 template<
typename Archive,
typename... Args>
119 template<
typename Archive,
typename... Args>
121 Save<
sizeof...(Args)>::
save(ar, t, version);
126 template<
typename Archive,
typename... Args>
128 Load<
sizeof...(Args)>::
load(ar, t, version);
133 template<
typename Archive,
typename... Args>
135 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 save(Archive &ar, const Euclid::GridContainer::GridContainer< GridCellManager, AxesTypes...> &grid, const unsigned int, typename std::enable_if< std::is_default_constructible< typename Euclid::GridContainer::GridCellManagerTraits< GridCellManager >::data_type >::value >::type *=0)
void load(Archive &ar, Euclid::GridContainer::GridContainer< GridCellManager, AxesTypes...> &grid, const unsigned int, typename std::enable_if< std::is_default_constructible< typename Euclid::GridContainer::GridCellManagerTraits< GridCellManager >::data_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 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)
static void save(Archive &, const std::tuple< Args...> &, const unsigned int)
This method does nothing. It exists to break the recursion.