| 1234567891011121314151617181920212223242526272829303132333435363738394041 | // -*-c++-*-// vim: set ft=cpp:/* Distributed under the OSI-approved BSD 3-Clause License.  See accompanying   file LICENSE.rst or https://cmake.org/licensing for details.  */#pragma once#include <algorithm>#include <string> // IWYU pragma: export#include <cm/bits/container_helpers.hxx> // IWYU pragma: exportnamespace 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;using std::erase_if;#elsetemplate <typename T, typename Traits, typename Allocator, typename V>inline void erase(std::basic_string<T, Traits, Allocator>& cont,                  V const& value){  cont.erase(std::remove(cont.begin(), cont.end(), value), cont.end());}template <typename T, typename Traits, typename Allocator, typename Predicate>inline void erase_if(std::basic_string<T, Traits, Allocator>& cont,                     Predicate pred){  cont.erase(std::remove_if(cont.begin(), cont.end(), pred), cont.end());}#endif} // namespace cm
 |