// -*-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.  */
#pragma once

#include <map> // 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 T, typename Compare, typename Allocator,
          typename Predicate>
inline void erase_if(std::map<Key, T, Compare, Allocator>& cont,
                     Predicate pred)
{
  internals::erase_if(cont, pred);
}

template <typename Key, typename T, typename Compare, typename Allocator,
          typename Predicate>
inline void erase_if(std::multimap<Key, T, Compare, Allocator>& cont,
                     Predicate pred)
{
  internals::erase_if(cont, pred);
}

#endif

} // namespace cm
