#ifndef CEREAL_BINARY_ARCHIVE_TUPLE_HPP_ #define CEREAL_BINARY_ARCHIVE_TUPLE_HPP_ #include #include #include namespace cereal { namespace tuple_detail { // unwinds a tuple to save it template struct serialize { template inline static void apply( Archive & ar, std::tuple & tuple ) { ar & std::get( tuple ); serialize::template apply( ar, tuple ); } }; // Zero height specialization - nothing to do here template <> struct serialize<0> { template inline static void apply( Archive & ar, std::tuple & tuple ) { } }; } //! Serializing for std::tuple to binary template inline CEREAL_ARCHIVE_RESTRICT_SERIALIZE(BinaryInputArchive, BinaryOutputArchive) serialize( Archive & ar, std::tuple & tuple ) { tuple_detail::serialize>::value>::template apply( ar, tuple ); } } // namespace cereal #endif // CEREAL_BINARY_ARCHIVE_TUPLE_HPP_