1 #ifndef PROTON_UNORDERED_SET_HEADER
2 #define PROTON_UNORDERED_SET_HEADER
4 #include <unordered_set>
12 template<
typename T,
typename H,
typename C,
typename A>
13 struct has_t<std::unordered_set<T,H,C,A> >{
14 template<
typename V>
static bool result(
const std::unordered_set<T,H,C,A>& x, V&& v)
16 return x.find(v)!=x.end();
22 template <
typename T,
typename H,
typename C,
typename A,
typename V >
23 std::unordered_set<T,H,C,A>& operator<<(std::unordered_set<T,H,C,A>& x, V&& val)
29 template <
typename T,
typename H,
typename C,
typename A,
typename V >
30 std::unordered_set<T,H,C,A>&
operator>>(std::unordered_set<T,H,C,A>& x, V& val)
38 template <
typename T,
typename H,
typename C,
typename A>
39 std::ostream& operator<<(std::ostream& s, const std::unordered_set<T,H,C,A>& x)
54 template <
typename T,
typename H,
typename C,
typename A>
55 std::unordered_set<T,H,C,A>
operator&(
const std::unordered_set<T,H,C,A>& x,
const std::unordered_set<T,H,C,A>& y)
57 std::unordered_set<T,H,C,A> z;
58 if(x.size()<y.size()){
74 template <
typename T,
typename H,
typename C,
typename A>
75 std::unordered_set<T,H,C,A>
operator|(
const std::unordered_set<T,H,C,A>& x,
const std::unordered_set<T,H,C,A>& y)
77 std::unordered_set<T,H,C,A> z;
87 template <
typename T,
typename H,
typename C,
typename A>
88 std::unordered_set<T,H,C,A>&
operator&=(std::unordered_set<T,H,C,A>& x,
89 const std::unordered_set<T,H,C,A>& y)
91 auto it=x.begin(), end=x.end();
104 template <
typename T,
typename H,
typename C,
typename A>
105 std::unordered_set<T,H,C,A>&
operator|=(std::unordered_set<T,H,C,A>& x,
106 const std::unordered_set<T,H,C,A>& y)
116 #endif // PROTON_UNORDERED_SET_HEADER