27 #ifndef CEREAL_TYPES_STACK_HPP_
28 #define CEREAL_TYPES_STACK_HPP_
30 #include <cereal/cereal.hpp>
35 namespace stack_detail
38 template <
class T,
class C>
inline
39 C
const & container( std::stack<T, C>
const & stack )
41 struct H :
public std::stack<T, C>
43 static C
const &
get( std::stack<T, C>
const & s )
49 return H::get( stack );
54 template <
class Archive,
class T,
class C>
inline
55 void save( Archive & ar, std::stack<T, C>
const & stack )
57 ar( _CEREAL_NVP(
"container", stack_detail::container( stack )) );
61 template <
class Archive,
class T,
class C>
inline
62 void load( Archive & ar, std::stack<T, C> & stack )
66 stack = std::stack<T, C>( std::move( container ) );
70 #endif // CEREAL_TYPES_STACK_HPP_