From 3c9a45987a31135ff9ff32678776d211586c5bfe Mon Sep 17 00:00:00 2001 From: hrkrshnn Date: Mon, 29 Mar 2021 11:17:49 +0200 Subject: [PATCH] Added c++20 polyfill: erase_if for std::set --- libsolutil/cxx20.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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(); +} + }