// <forward_list> -*- C++ -*-
-// Copyright (C) 2008-2013 Free Software Foundation, Inc.
+// Copyright (C) 2008-2019 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
# include <profile/forward_list>
#endif
+#if __cplusplus >= 201703L
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+ namespace pmr
+ {
+ template<typename _Tp> class polymorphic_allocator;
+ template<typename _Tp>
+ using forward_list = std::forward_list<_Tp, polymorphic_allocator<_Tp>>;
+ } // namespace pmr
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // C++17
+
+#if __cplusplus > 201703L
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+#define __cpp_lib_erase_if 201900L
+
+ template<typename _Tp, typename _Alloc, typename _Predicate>
+ inline typename forward_list<_Tp, _Alloc>::size_type
+ erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred)
+ { return __cont.remove_if(__pred); }
+
+ template<typename _Tp, typename _Alloc, typename _Up>
+ inline typename forward_list<_Tp, _Alloc>::size_type
+ erase(forward_list<_Tp, _Alloc>& __cont, const _Up& __value)
+ {
+ using __elem_type = typename forward_list<_Tp, _Alloc>::value_type;
+ return std::erase_if(__cont, [&](__elem_type& __elem) {
+ return __elem == __value;
+ });
+ }
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // C++20
+
#endif // C++11
#endif // _GLIBCXX_FORWARD_LIST