// -*-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
