diff mbox

[libstdc++] Add uniform container erasure.

Message ID 55435D1F.3090800@verizon.net
State New
Headers show

Commit Message

Ed Smith-Rowland May 1, 2015, 11:01 a.m. UTC
On 04/30/2015 02:01 PM, Daniel Krügler wrote:
> Shouldn't the "one-liner" forwarding function templates be declared as 
> inline? - Daniel 
You are right.

This builds and tests clean on x86_64-linux.

OK?
2015-05-01  Edward Smith-Rowland  <3dw4rd@verizon.net>

	Inline one-line erasure dispatch functions.
	* include/experimental/forward_list (erase_if(), erase()): Inline.
	* include/experimental/list (erase_if(), erase()): Inline.
	* include/experimental/map (erase_if(*)): Inline.
	* include/experimental/set (erase_if(*)): Inline.
	* include/experimental/string (erase_if(), erase()): Inline.
	* include/experimental/unordered_map (erase_if(*)): Inline.
	* include/experimental/unordered_set (erase_if(*)): Inline.

Comments

Jonathan Wakely May 1, 2015, 11:05 a.m. UTC | #1
On 01/05/15 07:01 -0400, Ed Smith-Rowland wrote:
>On 04/30/2015 02:01 PM, Daniel Krügler wrote:
>>Shouldn't the "one-liner" forwarding function templates be declared 
>>as inline? - Daniel
>You are right.
>
>This builds and tests clean on x86_64-linux.
>
>OK?

Yes OK, thanks.
diff mbox

Patch

Index: include/experimental/forward_list
===================================================================
--- include/experimental/forward_list	(revision 222661)
+++ include/experimental/forward_list	(working copy)
@@ -46,12 +46,13 @@ 
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Tp, typename _Alloc, typename _Predicate>
-    void 
+    inline void 
     erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred)
     { __cont.remove_if(__pred); }
 
   template<typename _Tp, typename _Alloc, typename _Up>
-    void erase(forward_list<_Tp, _Alloc>& __cont, const _Up& __value)
+    inline void
+    erase(forward_list<_Tp, _Alloc>& __cont, const _Up& __value)
     {
       using __elem_type = typename forward_list<_Tp, _Alloc>::value_type;
       erase_if(__cont, [&](__elem_type& __elem) { return __elem == __value; });
Index: include/experimental/list
===================================================================
--- include/experimental/list	(revision 222661)
+++ include/experimental/list	(working copy)
@@ -46,12 +46,12 @@ 
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Tp, typename _Alloc, typename _Predicate>
-    void
+    inline void
     erase_if(list<_Tp, _Alloc>& __cont, _Predicate __pred)
     { __cont.remove_if(__pred); }
 
   template<typename _Tp, typename _Alloc, typename _Up>
-    void
+    inline void
     erase(list<_Tp, _Alloc>& __cont, const _Up& __value)
     {
       using __elem_type = typename list<_Tp, _Alloc>::value_type;
Index: include/experimental/map
===================================================================
--- include/experimental/map	(revision 222661)
+++ include/experimental/map	(working copy)
@@ -48,13 +48,13 @@ 
 
   template<typename _Key, typename _Tp, typename _Compare, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(map<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
 
   template<typename _Key, typename _Tp, typename _Compare, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(multimap<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
 
Index: include/experimental/set
===================================================================
--- include/experimental/set	(revision 222661)
+++ include/experimental/set	(working copy)
@@ -48,13 +48,13 @@ 
 
   template<typename _Key, typename _Compare, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(set<_Key, _Compare, _Alloc>& __cont, _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
 
   template<typename _Key, typename _Compare, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(multiset<_Key, _Compare, _Alloc>& __cont, _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
 
Index: include/experimental/string
===================================================================
--- include/experimental/string	(revision 222661)
+++ include/experimental/string	(working copy)
@@ -48,7 +48,7 @@ 
 
   template<typename _CharT, typename _Traits, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(basic_string<_CharT, _Traits, _Alloc>& __cont, _Predicate __pred)
     {
       __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred),
@@ -56,7 +56,7 @@ 
     }
 
   template<typename _CharT, typename _Traits, typename _Alloc, typename _Up>
-    void
+    inline void
     erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value)
     {
       __cont.erase(std::remove(__cont.begin(), __cont.end(), __value),
Index: include/experimental/unordered_map
===================================================================
--- include/experimental/unordered_map	(revision 222661)
+++ include/experimental/unordered_map	(working copy)
@@ -48,7 +48,7 @@ 
 
   template<typename _Key, typename _Tp, typename _Hash, typename _CPred,
 	   typename _Alloc, typename _Predicate>
-    void
+    inline void
     erase_if(unordered_map<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont,
 	     _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
@@ -55,7 +55,7 @@ 
 
   template<typename _Key, typename _Tp, typename _Hash, typename _CPred,
 	   typename _Alloc, typename _Predicate>
-    void
+    inline void
     erase_if(unordered_multimap<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont,
 	     _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
Index: include/experimental/unordered_set
===================================================================
--- include/experimental/unordered_set	(revision 222661)
+++ include/experimental/unordered_set	(working copy)
@@ -48,7 +48,7 @@ 
 
   template<typename _Key, typename _Hash, typename _CPred, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(unordered_set<_Key, _Hash, _CPred, _Alloc>& __cont,
 	     _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
@@ -55,7 +55,7 @@ 
 
   template<typename _Key, typename _Hash, typename _CPred, typename _Alloc,
 	   typename _Predicate>
-    void
+    inline void
     erase_if(unordered_multiset<_Key, _Hash, _CPred, _Alloc>& __cont,
 	     _Predicate __pred)
     { __detail::__erase_nodes_if(__cont, __pred); }
Index: include/experimental/vector
===================================================================
--- include/experimental/vector	(revision 222661)
+++ include/experimental/vector	(working copy)
@@ -47,7 +47,7 @@ 
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   template<typename _Tp, typename _Alloc, typename _Predicate>
-    void
+    inline void
     erase_if(vector<_Tp, _Alloc>& __cont, _Predicate __pred)
     {
       __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred),
@@ -55,7 +55,7 @@ 
     }
 
   template<typename _Tp, typename _Alloc, typename _Up>
-    void
+    inline void
     erase(vector<_Tp, _Alloc>& __cont, const _Up& __value)
     {
       __cont.erase(std::remove(__cont.begin(), __cont.end(), __value),