The remainder of the Pre-emptively support P0646R1 for std container erasure.
authorEdward Smith-Rowland <emsr@gcc.gnu.org>
Fri, 30 Nov 2018 16:13:29 +0000 (16:13 +0000)
committerEdward Smith-Rowland <emsr@gcc.gnu.org>
Fri, 30 Nov 2018 16:13:29 +0000 (16:13 +0000)
From-SVN: r266673

libstdc++-v3/include/std/deque

index 25de200cefd208442ba660aae17b710adbdfd308..23dc752c4b22badede618cd00bb09f19bcfc04a8 100644 (file)
@@ -95,19 +95,23 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
   template<typename _Tp, typename _Alloc, typename _Predicate>
-    inline void
+    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 void
+    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