4#include <cereal/archives/binary.hpp> 
    5#include <cereal/cereal.hpp> 
    6#include <cereal/types/common.hpp> 
    7#include <cereal/types/vector.hpp> 
   12template <
class Archive, 
class _Scalar, 
int _Rows, 
int _Cols, 
int _Options,
 
   13          int _MaxRows, 
int _MaxCols>
 
   14void save(Archive &ar, Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows,
 
   16  int32_t rows = m.rows();
 
   17  int32_t cols = m.cols();
 
   20  ar(binary_data(m.data(), rows * cols * 
sizeof(_Scalar)));
 
   23template <
class Archive, 
class _Scalar, 
int _Rows, 
int _Cols, 
int _Options,
 
   24          int _MaxRows, 
int _MaxCols>
 
   27    Eigen::Matrix<_Scalar, _Rows, _Cols, _Options, _MaxRows, _MaxCols> &m) {
 
   35  ar(binary_data(m.data(),
 
   36                 static_cast<std::size_t
>(rows * cols * 
sizeof(_Scalar))));
 
   39template <
class Archive, 
class T1, 
class T2>
 
   40void save(Archive &ar, 
const std::tuple<T1, T2> &t) {
 
   41  ar(std::get<0>(t), std::get<1>(t));
 
   44template <
class Archive, 
class T1, 
class T2>
 
   45void load(Archive &ar, std::tuple<T1, T2> &t) {
 
   46  ar(std::get<0>(t), std::get<1>(t));