30 #ifndef CEREAL_TYPES_QUEUE_HPP_
31 #define CEREAL_TYPES_QUEUE_HPP_
41 namespace queue_detail
45 template <
class T,
class C>
inline
46 C
const & container( std::queue<T, C>
const & queue )
48 struct H :
public std::queue<T, C>
50 static C
const &
get( std::queue<T, C>
const & q )
56 return H::get( queue );
61 template <
class T,
class C,
class Comp>
inline
62 C
const & container( std::priority_queue<T, C, Comp>
const & priority_queue )
64 struct H :
public std::priority_queue<T, C, Comp>
66 static C
const &
get( std::priority_queue<T, C, Comp>
const & pq )
72 return H::get( priority_queue );
77 template <
class T,
class C,
class Comp>
inline
78 Comp
const & comparator( std::priority_queue<T, C, Comp>
const & priority_queue )
80 struct H :
public std::priority_queue<T, C, Comp>
82 static Comp
const &
get( std::priority_queue<T, C, Comp>
const & pq )
84 return pq.*(&H::comp);
88 return H::get( priority_queue );
93 template <
class Archive,
class T,
class C>
inline
96 ar(
CEREAL_NVP_(
"container", queue_detail::container( queue )) );
100 template <
class Archive,
class T,
class C>
inline
105 queue = std::queue<T, C>( std::move( container ) );
109 template <
class Archive,
class T,
class C,
class Comp>
inline
112 ar(
CEREAL_NVP_(
"comparator", queue_detail::comparator( priority_queue )) );
113 ar(
CEREAL_NVP_(
"container", queue_detail::container( priority_queue )) );
117 template <
class Archive,
class T,
class C,
class Comp>
inline
126 priority_queue = std::priority_queue<T, C, Comp>( comparator, std::move( container ) );
130 #endif // CEREAL_TYPES_QUEUE_HPP_
#define CEREAL_NVP_(name, value)
Convenience for creating a templated NVP.
Definition: helpers.hpp:197
Internal helper functionality.
Definition: access.hpp:39
Support for types found in
#define CEREAL_LOAD_FUNCTION_NAME
The deserialization (load) function name to search for.
Definition: macros.hpp:58
#define CEREAL_SAVE_FUNCTION_NAME
The serialization (save) function name to search for.
Definition: macros.hpp:65