// -*-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/container_helpers.hxx> // 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
