diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-14 10:26:09 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-14 10:26:09 +0000 |
commit | 66967f723d3fddadee0a9fc58158ebe50a273299 (patch) | |
tree | 6d9b34f6838cf2f44618a97610143a146bcf6579 /libstdc++-v3 | |
parent | 7ee609a5eaa52d482424bdb4f144fbe5be4773f7 (diff) | |
download | gcc-66967f723d3fddadee0a9fc58158ebe50a273299.tar.gz |
2009-12-14 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_list.h (splice(iterator, list&), splice(iterator,
list&, iterator), splice(iterator, list&, iterator, iterator),
merge(list&), merge(list&, _StrictWeakOrdering)): Re-add in C++0x
mode for backward compatibility (see DR 1133).
(insert(iterator, size_type, const value_type&), insert(iterator,
_InputIterator, _InputIterator)): Adjust.
* include/bits/list.tcc (sort): Likewise.
* testsuite/23_containers/list/modifiers/1_c++0x.cc: Add.
* testsuite/23_containers/list/operations/2_c++0x.cc: Likewise.
* testsuite/23_containers/list/operations/3_c++0x.cc: Likewise.
* testsuite/23_containers/list/requirements/dr438/
assign_neg.cc: Adjust dg-error line numbers.
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155210 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
10 files changed, 145 insertions, 21 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 39d1d707740..7c20083923a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,24 @@ +2009-12-14 Paolo Carlini <paolo.carlini@oracle.com> + + * include/bits/stl_list.h (splice(iterator, list&), splice(iterator, + list&, iterator), splice(iterator, list&, iterator, iterator), + merge(list&), merge(list&, _StrictWeakOrdering)): Re-add in C++0x + mode for backward compatibility (see DR 1133). + (insert(iterator, size_type, const value_type&), insert(iterator, + _InputIterator, _InputIterator)): Adjust. + * include/bits/list.tcc (sort): Likewise. + * testsuite/23_containers/list/modifiers/1_c++0x.cc: Add. + * testsuite/23_containers/list/operations/2_c++0x.cc: Likewise. + * testsuite/23_containers/list/operations/3_c++0x.cc: Likewise. + * testsuite/23_containers/list/requirements/dr438/ + assign_neg.cc: Adjust dg-error line numbers. + * 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. + 2009-12-11 Paolo Carlini <paolo.carlini@oracle.com> Matthias Klose <doko@ubuntu.com> diff --git a/libstdc++-v3/include/bits/list.tcc b/libstdc++-v3/include/bits/list.tcc index c461a41c80d..899b4181509 100644 --- a/libstdc++-v3/include/bits/list.tcc +++ b/libstdc++-v3/include/bits/list.tcc @@ -312,13 +312,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) do { - __carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin()); + __carry.splice(__carry.begin(), *this, begin()); for(__counter = &__tmp[0]; __counter != __fill && !__counter->empty(); ++__counter) { - __counter->merge(_GLIBCXX_MOVE(__carry)); + __counter->merge(__carry); __carry.swap(*__counter); } __carry.swap(*__counter); @@ -328,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) while ( !empty() ); for (__counter = &__tmp[1]; __counter != __fill; ++__counter) - __counter->merge(_GLIBCXX_MOVE(*(__counter - 1))); + __counter->merge(*(__counter - 1)); swap( *(__fill - 1) ); } } @@ -389,13 +389,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) do { - __carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin()); + __carry.splice(__carry.begin(), *this, begin()); for(__counter = &__tmp[0]; __counter != __fill && !__counter->empty(); ++__counter) { - __counter->merge(_GLIBCXX_MOVE(__carry), __comp); + __counter->merge(__carry, __comp); __carry.swap(*__counter); } __carry.swap(*__counter); @@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) while ( !empty() ); for (__counter = &__tmp[1]; __counter != __fill; ++__counter) - __counter->merge(_GLIBCXX_MOVE(*(__counter - 1)), __comp); + __counter->merge(*(__counter - 1), __comp); swap(*(__fill - 1)); } } diff --git a/libstdc++-v3/include/bits/stl_list.h b/libstdc++-v3/include/bits/stl_list.h index 2a6e58f798f..51f8a8f931d 100644 --- a/libstdc++-v3/include/bits/stl_list.h +++ b/libstdc++-v3/include/bits/stl_list.h @@ -1027,11 +1027,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) insert(iterator __position, size_type __n, const value_type& __x) { list __tmp(__n, __x, _M_get_Node_allocator()); -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - splice(__position, std::move(__tmp)); -#else - splice(__position, __tmp); -#endif + splice(__position, __tmp); } /** @@ -1053,11 +1049,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) _InputIterator __last) { list __tmp(__first, __last, _M_get_Node_allocator()); -#ifdef __GXX_EXPERIMENTAL_CXX0X__ - splice(__position, std::move(__tmp)); -#else splice(__position, __tmp); -#endif } /** @@ -1164,6 +1156,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) } } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + void + splice(iterator __position, list& __x) + { splice(__position, std::move(__x)); } +#endif + /** * @brief Insert element from another %list. * @param position Iterator referencing the element to insert before. @@ -1191,6 +1189,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) this->_M_transfer(__position, __i, __j); } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + void + splice(iterator __position, list& __x, iterator __i) + { splice(__position, std::move(__x), __i); } +#endif + /** * @brief Insert range from another %list. * @param position Iterator referencing the element to insert before. @@ -1221,6 +1225,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) } } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + void + splice(iterator __position, list& __x, iterator __first, iterator __last) + { splice(__position, std::move(__x), __first, __last); } +#endif + /** * @brief Remove all elements equal to value. * @param value The value to remove. @@ -1288,10 +1298,15 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) * sorted order, leaving @a x empty when complete. Elements in * this list precede elements in @a x that are equal. */ - void #ifdef __GXX_EXPERIMENTAL_CXX0X__ + void merge(list&& __x); + + void + merge(list& __x) + { merge(std::move(__x)); } #else + void merge(list& __x); #endif @@ -1307,11 +1322,18 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) * in this list precede elements in @a x that are equivalent * according to StrictWeakOrdering(). */ +#ifdef __GXX_EXPERIMENTAL_CXX0X__ template<typename _StrictWeakOrdering> void -#ifdef __GXX_EXPERIMENTAL_CXX0X__ merge(list&&, _StrictWeakOrdering); + + template<typename _StrictWeakOrdering> + void + merge(list& __x, _StrictWeakOrdering __comp) + { merge(std::move(__x), __comp); } #else + template<typename _StrictWeakOrdering> + void merge(list&, _StrictWeakOrdering); #endif diff --git a/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc new file mode 100644 index 00000000000..c055f70bc74 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include "1.h" +#include <list> + +int main() +{ + modifiers1<std::list<__gnu_test::copy_tracker> >(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc new file mode 100644 index 00000000000..faaf2f765b1 --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include "2.h" +#include <list> + +int main() +{ + operations02<std::list<int> >(); + return 0; +} diff --git a/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc b/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc new file mode 100644 index 00000000000..0598cfb225b --- /dev/null +++ b/libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc @@ -0,0 +1,27 @@ +// { dg-options "-std=gnu++0x" } + +// Copyright (C) 2009 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without Pred the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include "3.h" +#include <list> + +int main() +{ + operations03<std::list<int> >(); + return 0; +} 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 c0b6ea46be9..a9ef74472bf 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 @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1387 } +// { dg-error "no matching" "" { target *-*-* } 1409 } // { 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 0d27211a5f7..a3e29627f8d 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 @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1356 } +// { dg-error "no matching" "" { target *-*-* } 1378 } // { 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 bbf78080365..f90ed940727 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 @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1356 } +// { dg-error "no matching" "" { target *-*-* } 1378 } // { 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 1e84b97d301..24bcee0c7fd 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 @@ -18,7 +18,7 @@ // <http://www.gnu.org/licenses/>. // { dg-do compile } -// { dg-error "no matching" "" { target *-*-* } 1356 } +// { dg-error "no matching" "" { target *-*-* } 1378 } // { dg-excess-errors "" } #include <list> |