diff --git a/libsolutil/cxx20.h b/libsolutil/cxx20.h index bbe9817aa..6d96ddeb8 100644 --- a/libsolutil/cxx20.h +++ b/libsolutil/cxx20.h @@ -49,4 +49,19 @@ erase_if(std::unordered_map& _c, Pred _pred) return old_size - _c.size(); } +// Taken from https://en.cppreference.com/w/cpp/container/set/erase_if +template +typename std::set::size_type +erase_if(std::set& c, Pred pred) +{ + auto old_size = c.size(); + for (auto i = c.begin(), last = c.end(); i != last; ) + if (pred(*i)) + i = c.erase(i); + else + ++i; + + return old_size - c.size(); +} + }