diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 20 | ||||
-rw-r--r-- | libstdc++-v3/include/experimental/deque | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/std/deque | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/std/string | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/std/unordered_set | 13 | ||||
-rw-r--r-- | libstdc++-v3/include/std/vector | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/deque/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/list/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/map/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/set/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/23_containers/vector/erasure.cc | 1 |
15 files changed, 49 insertions, 5 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 553be51..82a6e53 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,23 @@ +2018-11-29 Edward Smith-Rowland <3dw4rd@verizon.net> + + Fix erasure goofs. + * include/experimental/deque: Make inline. + * include/std/deque: Include bits/stl_algo.h. + (erase, erase_if): Make inline. + * include/std/string: Include bits/stl_algo.h. + * include/std/unordered_set: Add erase, erase_if! + * include/std/vector: Include bits/stl_algo.h. + * testsuite/21_strings/basic_string/erasure.cc: + Add { dg-options "-std=gnu++2a" }. + * testsuite/23_containers/deque/erasure.cc: Ditto. + * testsuite/23_containers/forward_list/erasure.cc: Ditto. + * testsuite/23_containers/list/erasure.cc: Ditto. + * testsuite/23_containers/map/erasure.cc: Ditto. + * testsuite/23_containers/set/erasure.cc: Ditto. + * testsuite/23_containers/unordered_map/erasure.cc: Ditto. + * testsuite/23_containers/unordered_set/erasure.cc: Ditto. + * testsuite/23_containers/vector/erasure.cc: Ditto. + 2018-11-29 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/88119 diff --git a/libstdc++-v3/include/experimental/deque b/libstdc++-v3/include/experimental/deque index 88790b1..e1ea13f 100644 --- a/libstdc++-v3/include/experimental/deque +++ b/libstdc++-v3/include/experimental/deque @@ -46,7 +46,7 @@ namespace experimental inline namespace fundamentals_v2 { template<typename _Tp, typename _Alloc, typename _Predicate> - void + inline void erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred) { __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), @@ -54,7 +54,7 @@ inline namespace fundamentals_v2 } template<typename _Tp, typename _Alloc, typename _Up> - void + inline void erase(deque<_Tp, _Alloc>& __cont, const _Up& __value) { __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), diff --git a/libstdc++-v3/include/std/deque b/libstdc++-v3/include/std/deque index c577e80..764e1f1 100644 --- a/libstdc++-v3/include/std/deque +++ b/libstdc++-v3/include/std/deque @@ -58,6 +58,7 @@ #pragma GCC system_header #include <bits/stl_algobase.h> +#include <bits/stl_algo.h> // For remove and remove_if #include <bits/allocator.h> #include <bits/stl_construct.h> #include <bits/stl_uninitialized.h> @@ -92,7 +93,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION template<typename _Tp, typename _Alloc, typename _Predicate> - void + inline void erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred) { __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), @@ -100,7 +101,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template<typename _Tp, typename _Alloc, typename _Up> - void + inline void erase(deque<_Tp, _Alloc>& __cont, const _Up& __value) { __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), diff --git a/libstdc++-v3/include/std/string b/libstdc++-v3/include/std/string index e1497bd..33cb5e6 100644 --- a/libstdc++-v3/include/std/string +++ b/libstdc++-v3/include/std/string @@ -48,10 +48,10 @@ #include <bits/stl_function.h> // For less #include <ext/numeric_traits.h> #include <bits/stl_algobase.h> +#include <bits/stl_algo.h> // For remove and remove_if #include <bits/range_access.h> #include <bits/basic_string.h> #include <bits/basic_string.tcc> -#include <algorithm> // For remove and remove_if #if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI namespace std _GLIBCXX_VISIBILITY(default) diff --git a/libstdc++-v3/include/std/unordered_set b/libstdc++-v3/include/std/unordered_set index 3108275..a5e1e41 100644 --- a/libstdc++-v3/include/std/unordered_set +++ b/libstdc++-v3/include/std/unordered_set @@ -82,6 +82,19 @@ _GLIBCXX_END_NAMESPACE_VERSION namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION + template<typename _Key, typename _Hash, typename _CPred, typename _Alloc, + typename _Predicate> + inline void + erase_if(unordered_set<_Key, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { std::__detail::__erase_nodes_if(__cont, __pred); } + + template<typename _Key, typename _Hash, typename _CPred, typename _Alloc, + typename _Predicate> + inline void + erase_if(unordered_multiset<_Key, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { std::__detail::__erase_nodes_if(__cont, __pred); } _GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++20 diff --git a/libstdc++-v3/include/std/vector b/libstdc++-v3/include/std/vector index 5a1edaf..720e0eb 100644 --- a/libstdc++-v3/include/std/vector +++ b/libstdc++-v3/include/std/vector @@ -58,6 +58,7 @@ #pragma GCC system_header #include <bits/stl_algobase.h> +#include <bits/stl_algo.h> // For remove and remove_if #include <bits/allocator.h> #include <bits/stl_construct.h> #include <bits/stl_uninitialized.h> diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc b/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc index e9cca6f..d8ac6a4 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/deque/erasure.cc b/libstdc++-v3/testsuite/23_containers/deque/erasure.cc index 1fe6273..1bb0b95 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc b/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc index ac8a37d..9d06ebe 100644 --- a/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/list/erasure.cc b/libstdc++-v3/testsuite/23_containers/list/erasure.cc index c8d6f22..ff4dbcf 100644 --- a/libstdc++-v3/testsuite/23_containers/list/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/list/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/map/erasure.cc b/libstdc++-v3/testsuite/23_containers/map/erasure.cc index d638715..58706a1 100644 --- a/libstdc++-v3/testsuite/23_containers/map/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/map/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/set/erasure.cc b/libstdc++-v3/testsuite/23_containers/set/erasure.cc index 54b821b..1dccde8 100644 --- a/libstdc++-v3/testsuite/23_containers/set/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/set/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc b/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc index 0e17b4e2..8a47548 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc b/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc index 5d32c32..e5fcde0 100644 --- a/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. diff --git a/libstdc++-v3/testsuite/23_containers/vector/erasure.cc b/libstdc++-v3/testsuite/23_containers/vector/erasure.cc index b050b54..57567d3 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/erasure.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/erasure.cc @@ -1,3 +1,4 @@ +// { dg-options "-std=gnu++2a" } // { dg-do run { target c++2a } } // Copyright (C) 2018 Free Software Foundation, Inc. |