Commit 874e360b by Paolo Carlini Committed by Paolo Carlini

stl_list.h (splice(iterator, list&), [...]): Re-add in C++0x mode for backward…

stl_list.h (splice(iterator, list&), [...]): Re-add in C++0x mode for backward compatibility (see DR 1133).

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.

From-SVN: r155210
parent 507d0069
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> 2009-12-11 Paolo Carlini <paolo.carlini@oracle.com>
Matthias Klose <doko@ubuntu.com> Matthias Klose <doko@ubuntu.com>
......
...@@ -312,13 +312,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -312,13 +312,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
do do
{ {
__carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin()); __carry.splice(__carry.begin(), *this, begin());
for(__counter = &__tmp[0]; for(__counter = &__tmp[0];
__counter != __fill && !__counter->empty(); __counter != __fill && !__counter->empty();
++__counter) ++__counter)
{ {
__counter->merge(_GLIBCXX_MOVE(__carry)); __counter->merge(__carry);
__carry.swap(*__counter); __carry.swap(*__counter);
} }
__carry.swap(*__counter); __carry.swap(*__counter);
...@@ -328,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -328,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
while ( !empty() ); while ( !empty() );
for (__counter = &__tmp[1]; __counter != __fill; ++__counter) for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
__counter->merge(_GLIBCXX_MOVE(*(__counter - 1))); __counter->merge(*(__counter - 1));
swap( *(__fill - 1) ); swap( *(__fill - 1) );
} }
} }
...@@ -389,13 +389,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -389,13 +389,13 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
do do
{ {
__carry.splice(__carry.begin(), _GLIBCXX_MOVE(*this), begin()); __carry.splice(__carry.begin(), *this, begin());
for(__counter = &__tmp[0]; for(__counter = &__tmp[0];
__counter != __fill && !__counter->empty(); __counter != __fill && !__counter->empty();
++__counter) ++__counter)
{ {
__counter->merge(_GLIBCXX_MOVE(__carry), __comp); __counter->merge(__carry, __comp);
__carry.swap(*__counter); __carry.swap(*__counter);
} }
__carry.swap(*__counter); __carry.swap(*__counter);
...@@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -405,7 +405,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
while ( !empty() ); while ( !empty() );
for (__counter = &__tmp[1]; __counter != __fill; ++__counter) for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
__counter->merge(_GLIBCXX_MOVE(*(__counter - 1)), __comp); __counter->merge(*(__counter - 1), __comp);
swap(*(__fill - 1)); swap(*(__fill - 1));
} }
} }
......
...@@ -1027,11 +1027,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -1027,11 +1027,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
insert(iterator __position, size_type __n, const value_type& __x) insert(iterator __position, size_type __n, const value_type& __x)
{ {
list __tmp(__n, __x, _M_get_Node_allocator()); list __tmp(__n, __x, _M_get_Node_allocator());
#ifdef __GXX_EXPERIMENTAL_CXX0X__ splice(__position, __tmp);
splice(__position, std::move(__tmp));
#else
splice(__position, __tmp);
#endif
} }
/** /**
...@@ -1053,11 +1049,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -1053,11 +1049,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
_InputIterator __last) _InputIterator __last)
{ {
list __tmp(__first, __last, _M_get_Node_allocator()); list __tmp(__first, __last, _M_get_Node_allocator());
#ifdef __GXX_EXPERIMENTAL_CXX0X__
splice(__position, std::move(__tmp));
#else
splice(__position, __tmp); splice(__position, __tmp);
#endif
} }
/** /**
...@@ -1164,6 +1156,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -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. * @brief Insert element from another %list.
* @param position Iterator referencing the element to insert before. * @param position Iterator referencing the element to insert before.
...@@ -1191,6 +1189,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -1191,6 +1189,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
this->_M_transfer(__position, __i, __j); 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. * @brief Insert range from another %list.
* @param position Iterator referencing the element to insert before. * @param position Iterator referencing the element to insert before.
...@@ -1221,6 +1225,12 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -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. * @brief Remove all elements equal to value.
* @param value The value to remove. * @param value The value to remove.
...@@ -1288,10 +1298,15 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -1288,10 +1298,15 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* sorted order, leaving @a x empty when complete. Elements in * sorted order, leaving @a x empty when complete. Elements in
* this list precede elements in @a x that are equal. * this list precede elements in @a x that are equal.
*/ */
void
#ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __GXX_EXPERIMENTAL_CXX0X__
void
merge(list&& __x); merge(list&& __x);
void
merge(list& __x)
{ merge(std::move(__x)); }
#else #else
void
merge(list& __x); merge(list& __x);
#endif #endif
...@@ -1307,11 +1322,18 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D) ...@@ -1307,11 +1322,18 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
* in this list precede elements in @a x that are equivalent * in this list precede elements in @a x that are equivalent
* according to StrictWeakOrdering(). * according to StrictWeakOrdering().
*/ */
#ifdef __GXX_EXPERIMENTAL_CXX0X__
template<typename _StrictWeakOrdering> template<typename _StrictWeakOrdering>
void void
#ifdef __GXX_EXPERIMENTAL_CXX0X__
merge(list&&, _StrictWeakOrdering); merge(list&&, _StrictWeakOrdering);
template<typename _StrictWeakOrdering>
void
merge(list& __x, _StrictWeakOrdering __comp)
{ merge(std::move(__x), __comp); }
#else #else
template<typename _StrictWeakOrdering>
void
merge(list&, _StrictWeakOrdering); merge(list&, _StrictWeakOrdering);
#endif #endif
......
// { 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;
}
// { 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;
}
// { 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;
}
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// { dg-do compile } // { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1387 } // { dg-error "no matching" "" { target *-*-* } 1409 }
// { dg-excess-errors "" } // { dg-excess-errors "" }
#include <list> #include <list>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// { dg-do compile } // { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1356 } // { dg-error "no matching" "" { target *-*-* } 1378 }
// { dg-excess-errors "" } // { dg-excess-errors "" }
#include <list> #include <list>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// { dg-do compile } // { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1356 } // { dg-error "no matching" "" { target *-*-* } 1378 }
// { dg-excess-errors "" } // { dg-excess-errors "" }
#include <list> #include <list>
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
// { dg-do compile } // { dg-do compile }
// { dg-error "no matching" "" { target *-*-* } 1356 } // { dg-error "no matching" "" { target *-*-* } 1378 }
// { dg-excess-errors "" } // { dg-excess-errors "" }
#include <list> #include <list>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment