]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/include/std/deque
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / include / std / deque
index 07589d63eb651f07044e16ee30bc7692797383f4..efe04dbbb7c60993bef0295f90c1ed36e910c440 100644 (file)
@@ -1,6 +1,6 @@
 // <deque> -*- C++ -*-
 
-// Copyright (C) 2001-2013 Free Software Foundation, Inc.
+// Copyright (C) 2001-2020 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
@@ -58,6 +58,9 @@
 #pragma GCC system_header
 
 #include <bits/stl_algobase.h>
+#if __cplusplus > 201703L
+#  include <bits/stl_algo.h> // For remove and remove_if
+#endif // C++20
 #include <bits/allocator.h>
 #include <bits/stl_construct.h>
 #include <bits/stl_uninitialized.h>
 # include <debug/deque>
 #endif
 
-#ifdef _GLIBCXX_PROFILE
-# include <profile/deque>
-#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 deque = std::deque<_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 deque<_Tp, _Alloc>::size_type
+    erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred)
+    {
+      const auto __osz = __cont.size();
+      __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred),
+                  __cont.end());
+      return __osz - __cont.size();
+    }
+
+  template<typename _Tp, typename _Alloc, typename _Up>
+    inline typename deque<_Tp, _Alloc>::size_type
+    erase(deque<_Tp, _Alloc>& __cont, const _Up& __value)
+    {
+      const auto __osz = __cont.size();
+      __cont.erase(std::remove(__cont.begin(), __cont.end(), __value),
+                  __cont.end());
+      return __osz - __cont.size();
+    }
+_GLIBCXX_END_NAMESPACE_VERSION
+} // namespace std
+#endif // C++20
 
 #endif /* _GLIBCXX_DEQUE */