| // -*-c++-*- |
| // vim: set ft=cpp: |
| |
| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #ifndef cm_unordered_set |
| #define cm_unordered_set |
| |
| #include <unordered_set> // IWYU pragma: export |
| |
| #include <cm/bits/erase_if.hxx> |
| |
| namespace cm { |
| |
| // should be updated when C++20 is finalized |
| #if (__cplusplus > 201703L || \ |
| (defined(_MSVC_LANG) && _MSVC_LANG > 201703)) && \ |
| defined(__cpp_lib_erase_if) |
| |
| using std::erase_if; |
| |
| #else |
| |
| template <typename Key, typename Hash, typename KeyEqual, typename Allocator, |
| typename Predicate> |
| inline void erase_if(std::unordered_set<Key, Hash, KeyEqual, Allocator>& cont, |
| Predicate pred) |
| { |
| internals::erase_if(cont, pred); |
| } |
| |
| template <typename Key, typename Hash, typename KeyEqual, typename Allocator, |
| typename Predicate> |
| inline void erase_if( |
| std::unordered_multiset<Key, Hash, KeyEqual, Allocator>& cont, |
| Predicate pred) |
| { |
| internals::erase_if(cont, pred); |
| } |
| |
| #endif |
| |
| } // namespace cm |
| |
| #endif |