9template <
class T,
class C1,
class A1,
class U>
10inline auto operator|=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
11 for (
auto &el : b) a.insert(el);
14template <
class T,
class C1,
class A1,
class U>
15inline auto operator-=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
16 for (
auto &el : b) a.erase(el);
19template <
class T,
class C1,
class A1,
class U>
20inline auto operator&=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
21 for (
auto it = a.begin(); it != a.end();) {
30template <
class T,
class C1,
class A1,
class U>
31inline auto contains(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(),
true) {
33 if (!a.count(el))
return false;
36template <
class T,
class C1,
class A1,
class U>
37inline auto intersects(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(),
true) {
39 if (a.count(el))
return true;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:24