15template <
class T,
class C1,
class A1,
class U>
16inline auto operator|=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
17 for (
auto &el : b) a.insert(el);
20template <
class T,
class C1,
class A1,
class U>
21inline auto operator-=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
22 for (
auto &el : b) a.erase(el);
25template <
class T,
class C1,
class A1,
class U>
26inline auto operator&=(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(), a) {
27 for (
auto it = a.begin(); it != a.end();) {
36template <
class T,
class C1,
class A1,
class U>
37inline auto contains(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(),
true) {
39 if (!a.count(el))
return false;
42template <
class T,
class C1,
class A1,
class U>
43inline auto intersects(std::set<T, C1, A1> &a, U &b) ->
decltype(b.begin(),
true) {
45 if (a.count(el))
return true;
TODO: this is not really specific to BMV2, it should reside somewhere else.
Definition applyOptionsPragmas.cpp:13