35 #include <unordered_map>
37 #include <unordered_set>
41 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<false> &ar, std::vector<T> &v);
42 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<true> &ar, std::vector<T> &v);
44 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<false> &ar, std::deque<T> &v);
45 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<true> &ar, std::deque<T> &v);
47 template<
typename K,
typename V>
52 typename std::unordered_map<K, V> &
parent() {
return *
this; }
58 template<
typename K,
typename V>
63 typename std::map<K, V> &
parent() {
return *
this; }
69 template<
typename K,
typename V>
74 typename std::unordered_multimap<K, V> &
parent() {
return *
this; }
80 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<false> &ar, std::unordered_set<T> &v);
81 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<true> &ar, std::unordered_set<T> &v);
83 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<false> &ar, std::set<T> &v);
84 template <
template <
bool>
class Archive,
class T>
bool do_serialize(Archive<true> &ar, std::set<T> &v);
90 template <
typename T>
void do_reserve(std::vector<T> &c,
size_t N) { c.reserve(N); }
91 template <
typename T>
void do_add(std::vector<T> &c,
T &&e) { c.emplace_back(std::forward<T>(e)); }
93 template <
typename T>
void do_add(std::deque<T> &c,
T &&e) { c.emplace_back(std::forward<T>(e)); }
101 template <
typename T>
void do_add(std::unordered_set<T> &c,
T &&e) { c.insert(std::forward<T>(e)); }
103 template <
typename T>
void do_add(std::set<T> &c,
T &&e) { c.insert(std::forward<T>(e)); }