diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-05-10 15:18:33 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-05-10 15:18:33 +0000 |
commit | 94938aec1ab1996c4554fd3703708052144a784b (patch) | |
tree | 733216f9d05ef2101674b95a354adc2ed369f93c /libstdc++-v3/include/profile | |
parent | 341427fa2da0894f3f9d6966aa802ad237bffe3a (diff) | |
download | gcc-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/deque | 22 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/list | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/vector | 10 |
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 |