diff options
author | Paolo Carlini <pcarlini@suse.de> | 2007-11-23 11:49:07 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2007-11-23 11:49:07 +0000 |
commit | 360b7bffb189999022dfef2c1fa2ee63c73899bc (patch) | |
tree | 8822e9a6c2d1ac57aae43057277ac0328db35053 /libstdc++-v3 | |
parent | 5102fac5feb4262e4ea4bf771d8bc5a3f14812ed (diff) | |
download | gcc-360b7bffb189999022dfef2c1fa2ee63c73899bc.zip gcc-360b7bffb189999022dfef2c1fa2ee63c73899bc.tar.gz gcc-360b7bffb189999022dfef2c1fa2ee63c73899bc.tar.bz2 |
stl_list.h (insert(iterator, value_type&&)): Just forward to emplace.
2007-11-23 Paolo Carlini <pcarlini@suse.de>
* include/bits/stl_list.h (insert(iterator, value_type&&)): Just
forward to emplace.
* include/bits/stl_vector.h (insert(iterator, value_type&&)): Likewise.
* include/bits/stl_deque.h (insert(iterator, value_type&&)): Likewise.
* include/debug/list (insert(iterator, value_type&&)): Likewise.
* include/debug/vector (insert(iterator, value_type&&)): Likewise.
* include/debug/deque (insert(iterator, value_type&&)): Likewise.
* include/bits/list.tcc (insert(iterator, value_type&&)): Remove.
* include/bits/vector.tcc (insert(iterator, value_type&&)): Likewise.
* include/bits/deque.tcc (insert(iterator, value_type&&)): Likewise.
* testsuite/23_containers/vector/requirements/dr438/assign_neg.cc:
Adjust dg-error line number.
* testsuite/23_containers/vector/requirements/dr438/insert_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/deque/requirements/dr438/assign_neg.cc:
Adjust dg-error line number.
* testsuite/23_containers/deque/requirements/dr438/insert_neg.cc:
Likewise.
* 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/list/requirements/dr438/assign_neg.cc:
Adjust dg-error line number.
* testsuite/23_containers/list/requirements/dr438/insert_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.
From-SVN: r130374
Diffstat (limited to 'libstdc++-v3')
22 files changed, 58 insertions, 92 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 943f27c..d05dd12 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,40 @@ +2007-11-23 Paolo Carlini <pcarlini@suse.de> + + * include/bits/stl_list.h (insert(iterator, value_type&&)): Just + forward to emplace. + * include/bits/stl_vector.h (insert(iterator, value_type&&)): Likewise. + * include/bits/stl_deque.h (insert(iterator, value_type&&)): Likewise. + * include/debug/list (insert(iterator, value_type&&)): Likewise. + * include/debug/vector (insert(iterator, value_type&&)): Likewise. + * include/debug/deque (insert(iterator, value_type&&)): Likewise. + * include/bits/list.tcc (insert(iterator, value_type&&)): Remove. + * include/bits/vector.tcc (insert(iterator, value_type&&)): Likewise. + * include/bits/deque.tcc (insert(iterator, value_type&&)): Likewise. + * testsuite/23_containers/vector/requirements/dr438/assign_neg.cc: + Adjust dg-error line number. + * testsuite/23_containers/vector/requirements/dr438/insert_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/deque/requirements/dr438/assign_neg.cc: + Adjust dg-error line number. + * testsuite/23_containers/deque/requirements/dr438/insert_neg.cc: + Likewise. + * 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/list/requirements/dr438/assign_neg.cc: + Adjust dg-error line number. + * testsuite/23_containers/list/requirements/dr438/insert_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. + 2007-11-22 Paolo Carlini <pcarlini@suse.de> * include/bits/stl_tree.h (_Rb_tree<>::_Rb_tree_impl<, true>): Remove, diff --git a/libstdc++-v3/include/bits/deque.tcc b/libstdc++-v3/include/bits/deque.tcc index 7267acc..08b7ade 100644 --- a/libstdc++-v3/include/bits/deque.tcc +++ b/libstdc++-v3/include/bits/deque.tcc @@ -108,27 +108,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) #ifdef __GXX_EXPERIMENTAL_CXX0X__ template<typename _Tp, typename _Alloc> - typename deque<_Tp, _Alloc>::iterator - deque<_Tp, _Alloc>:: - insert(iterator __position, value_type&& __x) - { - if (__position._M_cur == this->_M_impl._M_start._M_cur) - { - push_front(std::move(__x)); - return this->_M_impl._M_start; - } - else if (__position._M_cur == this->_M_impl._M_finish._M_cur) - { - push_back(std::move(__x)); - iterator __tmp = this->_M_impl._M_finish; - --__tmp; - return __tmp; - } - else - return _M_insert_aux(__position, std::move(__x)); - } - - template<typename _Tp, typename _Alloc> template<typename... _Args> typename deque<_Tp, _Alloc>::iterator deque<_Tp, _Alloc>:: diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc index a7fcfb3..57ee10c 100644 --- a/libstdc++-v3/include/bits/list.tcc +++ b/libstdc++-v3/include/bits/list.tcc @@ -103,18 +103,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) return iterator(__tmp); } -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - template<typename _Tp, typename _Alloc> - typename list<_Tp, _Alloc>::iterator - list<_Tp, _Alloc>:: - insert(iterator __position, value_type&& __x) - { - _Node* __tmp = _M_create_node(std::move(__x)); - __tmp->hook(__position._M_node); - return iterator(__tmp); - } -#endif - template<typename _Tp, typename _Alloc> typename list<_Tp, _Alloc>::iterator list<_Tp, _Alloc>:: diff --git a/libstdc++-v3/include/bits/stl_deque.h b/libstdc++-v3/include/bits/stl_deque.h index a9c6aba..4261e75 100644 --- a/libstdc++-v3/include/bits/stl_deque.h +++ b/libstdc++-v3/include/bits/stl_deque.h @@ -1276,7 +1276,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) * specified location. */ iterator - insert(iterator __position, value_type&& __x); + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } #endif /** diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index 3b143c2..0904586a 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -951,7 +951,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) * invalidate iterators and references. */ iterator - insert(iterator __position, value_type&& __x); + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } #endif /** diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index 0e5e6c1..ad7d083 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -774,7 +774,8 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) * used the user should consider using std::list. */ iterator - insert(iterator __position, value_type&& __x); + insert(iterator __position, value_type&& __x) + { return emplace(__position, std::move(__x)); } #endif /** diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc index 2b5c4b7..354ab73 100644 --- a/libstdc++-v3/include/bits/vector.tcc +++ b/libstdc++-v3/include/bits/vector.tcc @@ -115,25 +115,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) return iterator(this->_M_impl._M_start + __n); } -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - template<typename _Tp, typename _Alloc> - typename vector<_Tp, _Alloc>::iterator - vector<_Tp, _Alloc>:: - insert(iterator __position, value_type&& __x) - { - const size_type __n = __position - begin(); - if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage - && __position == end()) - { - this->_M_impl.construct(this->_M_impl._M_finish, std::move(__x)); - ++this->_M_impl._M_finish; - } - else - _M_insert_aux(__position, std::move(__x)); - return iterator(this->_M_impl._M_start + __n); - } -#endif - template<typename _Tp, typename _Alloc> typename vector<_Tp, _Alloc>::iterator vector<_Tp, _Alloc>:: diff --git a/libstdc++-v3/include/debug/deque b/libstdc++-v3/include/debug/deque index c5358f0..2f967b4 100644 --- a/libstdc++-v3/include/debug/deque +++ b/libstdc++-v3/include/debug/deque @@ -309,13 +309,7 @@ namespace __debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ iterator insert(iterator __position, _Tp&& __x) - { - __glibcxx_check_insert(__position); - typename _Base::iterator __res = _Base::insert(__position.base(), - std::move(__x)); - this->_M_invalidate_all(); - return iterator(__res, this); - } + { return emplace(__position, std::move(__x)); } #endif void diff --git a/libstdc++-v3/include/debug/list b/libstdc++-v3/include/debug/list index 9b7f33b..b071d4f 100644 --- a/libstdc++-v3/include/debug/list +++ b/libstdc++-v3/include/debug/list @@ -322,11 +322,7 @@ namespace __debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ iterator insert(iterator __position, _Tp&& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), - std::move(__x)), this); - } + { return emplace(__position, std::move(__x)); } #endif void diff --git a/libstdc++-v3/include/debug/vector b/libstdc++-v3/include/debug/vector index 62cba68..672cb81 100644 --- a/libstdc++-v3/include/debug/vector +++ b/libstdc++-v3/include/debug/vector @@ -349,19 +349,7 @@ namespace __debug #ifdef __GXX_EXPERIMENTAL_CXX0X__ iterator insert(iterator __position, _Tp&& __x) - { - __glibcxx_check_insert(__position); - bool __realloc = _M_requires_reallocation(this->size() + 1); - difference_type __offset = __position - begin(); - typename _Base::iterator __res = _Base::insert(__position.base(), - std::move(__x)); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_if(_After_nth(__offset, _M_base().begin())); - _M_update_guaranteed_capacity(); - return iterator(__res, this); - } + { return emplace(__position, std::move(__x)); } #endif void diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc index dfc4363..16aab4f 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1464 } +// { dg-error "no matching" "" { target *-*-* } 1465 } // { dg-excess-errors "" } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc index 0790b5a..1c50b51 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1399 } +// { dg-error "no matching" "" { target *-*-* } 1400 } // { dg-excess-errors "" } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc index 2614ba0..73ccf65 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1399 } +// { dg-error "no matching" "" { target *-*-* } 1400 } // { dg-excess-errors "" } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc index a64f124..c376354 100644 --- a/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1552 } +// { dg-error "no matching" "" { target *-*-* } 1553 } // { dg-excess-errors "" } #include <deque> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc index 853e930..071ddf3 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1326 } +// { dg-error "no matching" "" { target *-*-* } 1327 } // { dg-excess-errors "" } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc index ea84200..14eb25a 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1295 } +// { dg-error "no matching" "" { target *-*-* } 1296 } // { dg-excess-errors "" } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc index 8283353..0cd72fa 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1295 } +// { dg-error "no matching" "" { target *-*-* } 1296 } // { dg-excess-errors "" } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc index 113b0b8..8547c2f 100644 --- a/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1295 } +// { dg-error "no matching" "" { target *-*-* } 1296 } // { dg-excess-errors "" } #include <list> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc index beae46d..59625e4 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 997 } +// { dg-error "no matching" "" { target *-*-* } 998 } // { dg-excess-errors "" } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc index 47023c5..06bf7ee 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 937 } +// { dg-error "no matching" "" { target *-*-* } 938 } // { dg-excess-errors "" } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc index 462058c5..f9abb0b 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 937 } +// { dg-error "no matching" "" { target *-*-* } 938 } // { dg-excess-errors "" } #include <vector> diff --git a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc index 834e10e..b0ce2da 100644 --- a/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc +++ b/libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc @@ -19,7 +19,7 @@ // USA. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1038 } +// { dg-error "no matching" "" { target *-*-* } 1039 } // { dg-excess-errors "" } #include <vector> |