aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/profile
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-05-10 15:18:33 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-05-10 15:18:33 +0000
commit94938aec1ab1996c4554fd3703708052144a784b (patch)
tree733216f9d05ef2101674b95a354adc2ed369f93c /libstdc++-v3/include/profile
parent341427fa2da0894f3f9d6966aa802ad237bffe3a (diff)
downloadgcc-94938aec1ab1996c4554fd3703708052144a784b.zip
gcc-94938aec1ab1996c4554fd3703708052144a784b.tar.gz
gcc-94938aec1ab1996c4554fd3703708052144a784b.tar.bz2
re PR libstdc++/54577 (deque<T>::erase() still takes iterator instead of const_iterator)
2013-05-10 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/54577 * include/bits/stl_deque.h (erase): Fix signatures in C++11 mode. (_Deque_iterator<>::_M_const_cast): Add. (deque<>::_M_erase): Declare. * include/bits/deque.tcc: ... and define. * include/bits/stl_list.h (erase): Fix signatures in C++11 mode. (_List_const_iterator<>::_M_const_cast): Add. * include/bits/list.tcc (erase (iterator)): Fix. * include/bits/stl_iterator.h (__normal_iterator<>::_M_const_cast): Add; include <ext/cast.h>. * include/bits/stl_vector.h (erase): Fix signatures in C++11 mode. (vector<>::_M_erase): Declare. * include/bits/stl_bvector.h: Likewise. * include/bits/vector.tcc (vector<>::_M_erase): Define. * include/ext/vstring.h (erase): Fix signatures in C++11 mode. * include/debug/deque: Adjust. * include/debug/list: Likewise. * include/debug/vector: Likewise. * include/profile/deque: Likewise. * include/profile/list: Likewise. * include/profile/vector: Likewise. * testsuite/util/exception/safety.h (erase_base<deque>, erase_base<deque>, erase_base<vector>): Remove. (erase_base<__versa_string>): Update. * testsuite/ext/vstring/modifiers/char/54577.cc: New. * testsuite/ext/vstring/modifiers/wchar_t/54577.cc: Likewise. * testsuite/23_containers/deque/modifiers/erase/54577.cc: Likewise. * testsuite/23_containers/list/modifiers/erase/54577.cc: Likewise. * testsuite/23_containers/vector/bool/modifiers/erase/54577.cc: Likewise. * testsuite/23_containers/vector/modifiers/erase/54577.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/assign_neg.cc: Adjust dg-error line numbers. * testsuite/23_containers/deque/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ insert_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/vector/requirements/dr438/insert_neg.cc: Likewise. From-SVN: r198790
Diffstat (limited to 'libstdc++-v3/include/profile')
-rw-r--r--libstdc++-v3/include/profile/deque22
-rw-r--r--libstdc++-v3/include/profile/list8
-rw-r--r--libstdc++-v3/include/profile/vector10
3 files changed, 28 insertions, 12 deletions
diff --git a/libstdc++-v3/include/profile/deque b/libstdc++-v3/include/profile/deque
index 5982684..9943e1e 100644
--- a/libstdc++-v3/include/profile/deque
+++ b/libstdc++-v3/include/profile/deque
@@ -379,25 +379,25 @@ namespace __profile
}
iterator
- erase(iterator __position)
+#if __cplusplus >= 201103L
+ erase(const_iterator __position)
+#else
+ erase(iterator __position)
+#endif
{
- if (__position == begin() || __position == end()-1)
- {
- return iterator(_Base::erase(__position));
- }
- else
- {
- typename _Base::iterator __res = _Base::erase(__position);
- return iterator(__res);
- }
+ return _Base::erase(__position);
}
iterator
+#if __cplusplus >= 201103L
+ erase(const_iterator __first, const_iterator __last)
+#else
erase(iterator __first, iterator __last)
+#endif
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
- return iterator(_Base::erase(__first, __last));
+ return _Base::erase(__first, __last);
}
void
diff --git a/libstdc++-v3/include/profile/list b/libstdc++-v3/include/profile/list
index 2870c4f..25ad112 100644
--- a/libstdc++-v3/include/profile/list
+++ b/libstdc++-v3/include/profile/list
@@ -389,11 +389,19 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
}
iterator
+#if __cplusplus >= 201103L
+ erase(const_iterator __position)
+#else
erase(iterator __position)
+#endif
{ return iterator(_Base::erase(__position.base()), this); }
iterator
+#if __cplusplus >= 201103L
+ erase(const_iterator __position, const_iterator __last)
+#else
erase(iterator __position, iterator __last)
+#endif
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container
diff --git a/libstdc++-v3/include/profile/vector b/libstdc++-v3/include/profile/vector
index 74a3030..d9eb157 100644
--- a/libstdc++-v3/include/profile/vector
+++ b/libstdc++-v3/include/profile/vector
@@ -425,14 +425,22 @@ namespace __profile
iterator
- erase(iterator __position)
+#if __cplusplus >= 201103L
+ erase(const_iterator __position)
+#else
+ erase(iterator __position)
+#endif
{
typename _Base::iterator __res = _Base::erase(__position.base());
return iterator(__res, this);
}
iterator
+#if __cplusplus >= 201103L
+ erase(const_iterator __first, const_iterator __last)
+#else
erase(iterator __first, iterator __last)
+#endif
{
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 151. can't currently clear() empty container